“为什么?”+&引用;在Scala中,即使操作数之间没有空格,运算符也可以工作
我正在学习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能够正确地拆分内容(这里它总是可以),解析器就可以毫不含糊地解析结果 只要您不将关键字与标识符合并(例如,因为它们之间没有空格),白色字符就无关紧要。可以在此处拆分标
Int
类中的一个方法(它接受一个参数并返回另一个Int实例)
例如:1+2
相当于1.+(2)
我的问题是这个表达式是如何工作的?1+2
//(前后无空格)+可以在此处拆分标识符和文字:
-int-literal1
-标识符+
-int-literal2
-int-literal1
-标识符+
-int-literal2
只要您没有将关键字与标识符合并(例如,因为它们之间没有空格),白色字符就无关紧要。同样,对于大多数语言来说,白色空格没有意义,因此解析器只会忽略它们。您还可以编写
1+2
。多个语句必须用新行或分号分隔同样,对于大多数语言来说,空格是没有意义的,所以解析器会忽略它们。您还可以编写1+2
。多个语句必须用新行或分号分隔代码>