用@ name.split替换self.name.split是同一件事吗?
class Person
attr_accessor :name
def initialize(name)
@name = name
end
def normalize_name
self.name.split(" ").collect{|w| w.capitalize}.join(" ")
end
end
答案 0 :(得分:0)
是的,它具有相同的结果,因为您定义了一个attr_accessor
,它提供了getter和setter方法
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">