我在学习Ruby,在书中发现了这个代码示例,它是关于封装的。这: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
我的问题是,为什么他不把属性FIRST_NAME并且在该行first_name, last_name = name.split(/\s+/)
姓氏LIKE实例变量?由于在其他方面他用@符号解决了他们?
不幸的是,代码示例看起来像Java getter和setter,写这个的人可能来自非Ruby背景,set_first_name和set_last_name方法应该只是使用'attr_accessor:first_name,:last_name'生成,为什么人们用这种奇怪的,非惯用的方式来编写Ruby,我不知道。 – photoionized