code

2016年10月25日 星期二

Scala筆記 9 - Operators overloading & precedence

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上:


所以基本上已經實現“先乘除後加減”的規則。









沒有留言:

張貼留言