官术网_书友最值得收藏!

Operator precedence

Operations such as 2 + 3 * 4 / 2 - 1 can give different results if there's no rule for evaluation of these. Hence we have some precedence-based rules for these. We're going to talk about it in this part:

scala> 2 + 3 * 4 / 2 - 1
res15: Int = 7

For reference purposes, we have the preceding expression. The evaluation gives back the result 7. How?

The expression (2 + ((3 * 4) / 2))) - 1 is evaluated in the following steps:

  1. (2 + (12 / 2)) - 1
  2. (2 + 6) - 1
  3. 8 - 1
  4. 7

It's based on operator precedence. That's in the following order:

Operator precedence

As shown in the preceding figure, Scala operator expressions are evaluated based on the precedence shown. As per the figure, *, /, and % are of top priority, then comes + and -.

Other operators also follow the same precedence as shown. If operators of the same precedence level appear together, the operands are evaluated from left to right. It means that the expression 1 + 2 + 3 * 3 * 4 - 1 will result in 38:

scala> 1 + 2 + 3 * 3 * 4 - 1
res16: Int = 38

The expression (1 + 2) + ((3 * 3) * 4) - 1 will be evaluated in the following steps:

  1. 1 + 2 + 9 * 4 - 1
  2. 1 + 2 + 36 - 1
  3. 3 + 36 - 1
  4. 39 - 1
  5. 38

This gives clarity of evaluation of expressions in Scala.

主站蜘蛛池模板: 乐山市| 泊头市| 且末县| 绩溪县| 永州市| 沂水县| 永和县| 会宁县| 洞头县| 汝南县| 正镶白旗| 三原县| 乌兰察布市| 喀喇| 四会市| 通道| 嘉义县| 牡丹江市| 色达县| 尚志市| 河池市| 新晃| 呼玛县| 宿迁市| 通辽市| 赤峰市| 怀安县| 西安市| 巴马| 新竹市| 哈巴河县| 盐亭县| 丰都县| 霍邱县| 界首市| 阿拉善盟| 杂多县| 惠来县| 米易县| 榆树市| 牟定县|