在ruby中,以等号结尾的方法比较特殊,ruby允许以赋值操作的语法来调用他们。
class MyClass
def name=(aName)
@name = aName
end
end
ob = MyClass.new
ob.name=('Tim')
ob.name = 'Tim' # 等价的写法
我的问题是
class MyClass
def name=(firstName, lastName)
@firstName = firstName
@lastName = lastName
end
end
ob = MyClass.new
ob.name=, “=”结束约定为 setter 方法, 只支持一个参数.
不要想为什么, 这个是语法约定。
[code="ruby"]
class Person
def name=(fullname)
@first_name = fullname[:first]
@last_name = fullname[:last]
end
def name
"#{@first_name}.#{@last_name}"
end
end
p = Person.new
p.name= {:first => 'lv', :last => 'jian'}
p p.name
[/code]