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 次 |
最近记录: |