Ruby Assignment语法
一个愚蠢的句法问题:
如果赋值运算符实际上是一个函数,就像
def value=(x) @value = x end
如果左侧操作数和“=”之间没有空格,那么为什么可以将赋值作为test.value = x(带空格),但方法定义不能写为:
def value = (x) @value = x end
与空间。 这是解析器所决定的简单语法吗?
def
需要后跟一个函数名称的标记,后面跟一个参数列表。 参数列表上的括号是可选的(例如, def value= x
是一个合适的定义)。 def value = (x)
看起来像def
后跟两个标记,然后是一个参数列表,它不解析。
这是解析器/解释器的魔力。
当解释器看到赋值查找匹配方法时。
在这方面我差不多同意你(差不多),我认为赋值应该是some.value= x
(’value’和’=’之间没有空格)。
Scala做了类似的事情,但使用了下划线def value_= ( x: X )