关于ruby以等号结尾的方法的问题

在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=('it','eye') # 报错
ob.name = 'it', 'eye' # 还是报错

这样的包含2个以上参数的方法定义,应该如何调用。。。

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]