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

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.

主站蜘蛛池模板: 青铜峡市| 安国市| 乐东| 南皮县| 龙门县| 谢通门县| 通城县| 金塔县| 松原市| 保康县| 哈巴河县| 余江县| 特克斯县| 华安县| 新丰县| 洛浦县| 绍兴县| 镇江市| 白山市| 曲阜市| 永善县| 黄平县| 石城县| 乐业县| 屏东市| 延津县| 乌苏市| 临江市| 文成县| SHOW| 芦山县| 永城市| 柘荣县| 通渭县| 金华市| 观塘区| 沂水县| 海原县| 望江县| 班戈县| 伊宁县|