Да, это имеет тот же результат, потому что вы определили attr_accessor
, который дает вам методы получения и установки
class Person
def name
@name
end
def name=(str)
@name = str
end
end
так что вы можете вызывать функцию name
, используя self
приемник, но если вы избавитесь от attr_accessor
от вашего класса, вы не сможете использовать self.name
, чтобы получить значение name
class Person
def initialize(name)
@name = name
end
def normalize_name
self.name.split(" ").collect{|w| w.capitalize}.join(" ")
end
end
p = Person.new('John Doe')
p.normalize_name
NoMethodError: undefined method `name' for #<Person:0x00557e98300f68 @name="John Doe">