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 )