' def function =(param)'红宝石意味着什么?

时间:2014-09-21 14:47:47

标签: ruby syntax

如果这是一个菜鸟问题,我很抱歉,但我似乎无法在stackoverflow或其他任何地方找到答案。代码是:

def full_name=(new_full_name)
  # stuff
end

当我在控制台中定义它时,试着唤起它:

full_name       # nil
full_name       # [hangs, needs ^C]
full_name= arg  # works like normal function
full_name       # works again with no arguments, as if I passed the previous argument    

那么,正在发生什么

感谢。

1 个答案:

答案 0 :(得分:0)

=结尾的方法定义了一个setter。在定义这样的setter时,无论在调用setter时是什么,ruby都会返回方法参数。

然后,您可以使用object.full_name= "Daniel"返回=> "Daniel"


您的示例中的其他一些常见附录:

问号,例如 has_full_name?

如果对象具有full_name

,则

应返回布尔值

感叹号,例如 revert_full_name!

应该还原对象的full_name变量

revert_full_name

相反,

应返回恢复的full_name变量,但不在对象

中更改它