操作符的优先级如下
::
$ @
^
- + (一元操作符)
:
%xyz%
* /
+ - (二元操作符)
> >= < <= == !=
!
& &&
| ||
~ (一元操作符和二元操作符)
-> ->>
= (作为赋值操作符)
<- <<-
幂操作符 ^ 和
左赋值操作符
<- - = <<- 从右往左操作,所有其它操作符从左往右操作。
因此 2 ^ 2 ^ 3 和 2 ^ 8 相等而不是 4 ^ 3,
而 1 - 1 - 1 是 -1,而不是 1。
注意用于求模和整除的操作符 %% 和 %/%
优先级高于乘法和除法。
尽管该操作符要求不太严格,但仍需提起。= 号 可用于函数调用时标记参数也可用于函数定义时 设定默认值。
从某种意义上说,$也是一种操作符,但不可以 放在任意对象的右边,这在Index constructions 部分进行了一定的讨论。它比其它任一操作符的优先 级别都高。
一个一元或二元操作的解析形式完全等价于一个以操作符作为函数名字 的函数调用,并且操作数就是函数参数。
括弧可以看作是一个名为"("的一元操作符。
这也包括用于设定操作优先(如a * (b + c))中的括弧。
注意赋值符号是和
算术,关系和逻辑操作符类似的操作符。
在赋值操作的目标侧,任何表达式都是允许的(解析器层次)。
(从解析器的角度,2 + 2 <- 5 是合法的表达式。尽管求值程序反对。)
类似的说明还可用于模型公式中的操作符。