Operators
Scala的identifier命名接受符號開頭的symbol,所以要overload 某些operators例如+ - * /,都是可能的,不過這還需要Scala支援以下語法:x.+(y) 也可以寫成 x + y,當某個function只有一個parameter的時候,我們在呼叫時可以省略.()這種語法。
所以Scala可以模擬一般數學的binary operators。
那unary operator呢? 例如我們想要有一個negate(x),能否寫成-x?
可以喔,但是要在宣告function name的時候加上 unary_ 這個symbol。
一個例子:
Operator Precedence Rules
即便我們能利用operator overloading模擬出數學算式,但是“先乘除後加減”這種隱性的規則,如何達成呢?Scala按照一般的operator precedence訂了一套規則(越下面,套用在operator identifier上:
所以基本上已經實現“先乘除後加減”的規則。
沒有留言:
張貼留言