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

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.

主站蜘蛛池模板: 延吉市| 遂川县| 封开县| 南部县| 大洼县| 宜春市| 梅河口市| 上饶县| 东港市| 甘洛县| 宜州市| 本溪市| 西充县| 长寿区| 晋城| 新龙县| 株洲市| 闻喜县| 舒兰市| 托里县| 民权县| 库尔勒市| 溧阳市| 司法| 长治县| 彭山县| 会泽县| 玛纳斯县| 依安县| 康平县| 康乐县| 北流市| 巫山县| 红安县| 澄江县| 桃江县| 富顺县| 静安区| 临江市| 习水县| 南丰县|