Tg.*_*Tg. 6 scala operator-keyword
我对scala很新.我浏览了这本书,并在代码中绊倒了这两个操作符.他们在做什么 ?
Lex*_*Lex 14
在Scala中使用运算符时会有一些语法糖.
考虑一个运营商*.当编译器遇到时a *= b,它将检查是否*=定义了方法a,并a.*=(b)在可能的情况下调用.否则表达式将扩展为a = a.*(b).
但是,任何以a结尾的运算符:在转换为方法调用时都会交换左右参数.因此a :: b变得b.::(a).另一方面,由于缺乏订单逆转而a ::= b变得a = a.::(b)可能违反直觉.
由于特殊含义,无法定义运算符:.因此:,例如与其他符号结合使用:=.
Scala中的运算符由库编写者定义,因此它们可能意味着不同的东西.
::运算符通常用于列表连接和a ::= b方法take a, prepend b to it, and assign the result to a.
a := b通常意味着set the value of a to the value of b,相反,a = b这将导致the reference a to point to object b.
| 归档时间: |
|
| 查看次数: |
1313 次 |
| 最近记录: |