我正在研究“ Beginning Ruby ”一书,一切都很好,直到我开始封装。我知道这段代码在做什么,我只是不知道为什么用方法来设置它。
对于那些感兴趣的人,这是本书中封装页面的链接。
class Person
def initialize(name)
set_name(name)
end
def name
@first_name + ' ' + @last_name
end
def set_name(name)
first_name, last_name = name.split(/\s+/)
set_first_name(first_name)
set_last_name(last_name)
end
def set_first_name(name)
@first_name = name
end
def set_last_name(name)
@last_name = name
end
end
p = Person.new("Fred Bloggs")
puts p.name
在我看来,这样的事情可以达到同样的效果:
class Person
def initialize(name)
@first_name, @last_name = name.split(/\s+/)
end
def name
@first_name + ' ' + @last_name
end
end
p = Person.new("Fred Bloggs")
puts p.name
为什么要在单独的方法中设置对象变量?