1

さて、私はこれを行うことができます:

class Person
  attr_accessor :name

  def greeting
    "Hello #{@name}"
  end
end

p = Person.new
p.name = 'Dave'
p.greeting  # "Hello Dave"

しかし、クラス自体にプロパティを割り当てることにしたとき、それは機能しません:

class Person
  attr_accessor :name
  @name = "Dave"    
  def greeting
    "Hello #{@name}"
  end
end

p = Person.new
p.greeting  # "Hello"
4

2 に答える 2

0

Personクラスは、1 人の人物インスタンスを作成できる設計図と考えてください。これらの人物インスタンスのすべてが「Dave」という名前を持つわけではないため、インスタンス自体にこの名前を設定する必要があります。

class Person
  def initialize(name)
    @name = name
  end
  attr_accessor :name

  def greeting
    "Hello #{@name}"
  end
end

david = Person.new("David")
p david.greeting
# => "Hello David"

mike = Person.new("Mike")
p mike.greeting
# => "Hello Mike"
于 2013-11-11T06:39:31.870 に答える