1

私はRubyを学んでいて、インスタンス変数とクラスインスタンス変数の違いを示す以下のようなコードに出くわしました。コンソールでテストしたところ、説明どおりに動作します(「John」が出力されます)。私が理解していないのは、前に?を付けずにインスタンス変数にdefine_methodアクセスする方法です。それを可能にする特別な能力を持っていますか?@namename@

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”
4

1 に答える 1