Ruby Assignment语法

iny*_*ner 6 ruby syntax language-design

一个愚蠢的句法问题:

如果赋值运算符实际上是一个函数,比如

def value=(x)
  @value = x
end
Run Code Online (Sandbox Code Playgroud)

如果左侧操作数和"="之间没有空格,那么为什么可以将赋值作为test.value = x(带空格),但方法定义不能写为:

def value = (x)
  @value = x
end
Run Code Online (Sandbox Code Playgroud)

与空间.这只是解析器决定的语法吗?

cam*_*cam 6

def需要后跟函数名称的标记,可选地后跟参数列表.参数列表上的括号是可选的(例如,def value= x是一个合适的定义). def value = (x)看起来def后面跟着两个令牌,然后是一个不解析的参数列表.