Extend.rb

This content was produced by an LLM and could include errors.

このスクリプトは extend による特異クラスへのミックスインです。モジュールBがモジュールAを extend すると、A の attr_accessor :abc がBの特異メソッドとして生え、B.abc = 123 / B.abc というモジュール単位の読み書き(実体はBオブジェクトの@abc)が可能になります。クラスメソッド的なDSLを作る基礎テクニックで、include との違い(オブジェクト単位 vs クラス単位)を理解するのに適しています。

# frozen_string_literal: true
#=> nil

module A
  attr_accessor :abc
end
#=> [:abc, :abc=]

module B
  extend A
end
#=> B

B.abc = 123
#=> 123
B.abc
#=> 123

Ruby 4.0.6