“为什么?”+&引用;在Scala中,即使操作数之间没有空格,运算符也可以工作

“为什么?”+&引用;在Scala中,即使操作数之间没有空格,运算符也可以工作,scala,operator-overloading,infix-notation,Scala,Operator Overloading,Infix Notation,我正在学习Scala,并且知道下面的代码是有效的,因为“+”是Int类中的一个方法(它接受一个参数并返回另一个Int实例) 例如:1+2相当于1.+(2) 我的问题是这个表达式是如何工作的? 1+2//(前后无空格)+可以在此处拆分标识符和文字: 1-int-literal +-标识符 2-int-literal 只要lexer能够正确地拆分内容(这里它总是可以),解析器就可以毫不含糊地解析结果 只要您不将关键字与标识符合并(例如,因为它们之间没有空格),白色字符就无关紧要。可以在此处拆分标

我正在学习Scala,并且知道下面的代码是有效的,因为“+”是
Int
类中的一个方法(它接受一个参数并返回另一个Int实例)

例如:
1+2
相当于
1.+(2)

我的问题是这个表达式是如何工作的?
1+2
//(前后无空格)+

可以在此处拆分标识符和文字:

  • 1
    -int-literal
  • +
    -标识符
  • 2
    -int-literal
只要lexer能够正确地拆分内容(这里它总是可以),解析器就可以毫不含糊地解析结果

只要您不将关键字与标识符合并(例如,因为它们之间没有空格),白色字符就无关紧要。

可以在此处拆分标识符和文字:

  • 1
    -int-literal
  • +
    -标识符
  • 2
    -int-literal
只要lexer能够正确地拆分内容(这里它总是可以),解析器就可以毫不含糊地解析结果


只要您没有将关键字与标识符合并(例如,因为它们之间没有空格),白色字符就无关紧要。

同样,对于大多数语言来说,白色空格没有意义,因此解析器只会忽略它们。您还可以编写
1+2
。多个语句必须用新行或分号分隔
1+2
。多个语句必须用新行或分号分隔