私はRubyを学んでいて、インスタンス変数とクラスインスタンス変数の違いを示す以下のようなコードに出くわしました。コンソールでテストしたところ、説明どおりに動作します(「John」が出力されます)。私が理解していないのは、前に?を付けずにインスタンス変数にdefine_method
アクセスする方法です。それを可能にする特別な能力を持っていますか?@name
name
@
class User
attr_reader :name
def self.name
"User"
end
def initialize(name)
@name = name
end
define_method(:output_name) do
puts name
end
end
user1 = User.new("John")
user1.output_name #=> “John”