运算符
运算符是一个符号,告诉编译器执行特定的数学或逻辑操作。 elixir提供了很多运算符。 它们分为以下几类 -
- 算术运算符
- 比较运算符
- 布尔运算符
- 其他运算符
算术运算符 (Arithmetic Operators)
下表显示了Elixir语言支持的所有算术运算符。 假设变量A保持10,变量B保持20,则 -
操作者 | 描述 | 例 |
---|---|---|
+ | Adds 2 numbers. | A + B将给出30 |
- | 从第一个减去第二个数字。 | A-B will give -10 |
* | 将两个数相乘。 | A * B将给出200 |
/ | 将第一个数字除以第二个数字。 这会将数字转换为浮点数并给出浮点结果 | A/B将给出0.5。 |
div | 此函数用于获取除法的商。 | div(10,20) will give 0 |
rem | 此函数用于获取除法的余数。 | rem(A,B)将给出10 |
比较运算符 (Comparison Operators)
Elixir中的比较运算符与大多数其他语言中提供的运算符相同。 下表总结了Elixir中的比较运算符。 假设变量A保持10,变量B保持20,则 -
操作者 | 描述 | 例 |
---|---|---|
== | 检查左边的值是否等于右边的值(如果它们不是同一类型,则键入强制转换值)。 | A == B将给出错误 |
!= | 检查左边的值是否等于右边的值。 | A!= B将给出真实 |
=== | 检查左边的值类型是否等于右边的值类型,如果是,则检查值是否相同。 | A === B会给出错误 |
!== | 与上面相同,但检查不平等而不是相等。 | A!== B将给出真实 |
> | 检查左操作数的值是否大于右操作数的值; 如果是,则条件成立。 | A> B将给出错误 |
< | 检查左操作数的值是否小于右操作数的值; 如果是,则条件成立。 | A < B 为 true |
>= | 检查左操作数的值是否大于或等于右操作数的值; 如果是,则条件成立。 | A> = B将给出错误 |
<= | 检查左操作数的值是否小于或等于右操作数的值; 如果是,则条件成立。 | A <= B将给出真实 |
逻辑运算符
Elixir提供了6个逻辑运算符:和,或者,不是,&&,|| 和! 前三个, and or not严格的布尔运算符,这意味着它们期望它们的第一个参数是布尔值。 非布尔参数将引发错误。 而接下来的三个, &&, || and ! &&, || and ! 是非严格的,不要求我们将第一个值严格地作为布尔值。 它们的工作方式与严格的同行相同。 假设变量A成立,变量B成立20,则 -
操作者 | 描述 | 例 |
---|---|---|
and | 检查提供的两个值是否真实,如果是,则返回第二个变量的值。 (逻辑和)。 | A和B将给20 |
or | 检查提供的值是否真实。 返回真正的值。 否则返回false。 (逻辑或)。 | A或B将给出真实 |
not | 一元运算符,它反转给定输入的值。 | 不是A会给出错误 |
&& | 非严格and 。 与第一个参数相同但不期望它是布尔值。 | B && A将给20 |
|| | 非严格or 。 与第一个参数相同or不期望第一个参数是布尔值。 | B || A会给出真实的 |
! | 非严格not 。 同样的工作原理,但不要指望参数是布尔值。 | !A will give false |
NOTE − and , or , &&和|| || 是短路运算符。 这意味着如果和的第一个参数为false,那么它将不会进一步检查第二个参数。 如果第一个参数or为真,那么它将不会检查第二个参数。 例如,
false and raise("An error")
#This won't raise an error as raise function wont get executed because of short
#circuiting nature of and operator
按位运算符 (Bitwise Operators)
按位运算符处理位并执行逐位操作。 Elixir提供按位模块作为Bitwise包的一部分,因此为了使用这些模块,您需要use按位模块。 要使用它,请在shell中输入以下命令 -
use Bitwise
对于以下示例,假设A为5,B为6:
操作者 | 描述 | 例 |
---|---|---|
&&& | 如果两个操作数中都存在Bitwise和运算符,则会将其复制到结果中。 | A &&& B将给出4 |
||| | 如果在任一操作数中存在,则按位或运算符将一个位复制到结果。 | A ||| B会给7 |
>>> | 按位右移运算符将第一个操作数位向右移动第二个操作数中指定的数字。 | A >>> B将给出0 |
<<< | 按位左移位运算符将第一个操作数位向左移动第二个操作数中指定的数字。 | A <<< B将给出320 |
^^^ | 只有在两个操作数上它们不同时,按位XOR运算符才会将某个位复制到结果中。 | A ^^^ B将给出3 |
~~~ | 一元按位不反转给定数字上的位。 | ~~~ A会给-6 |
其它运算符
除了上述运算符之外,Elixir还提供了一系列其他运算符,如Concatenation Operator, Match Operator, Pin Operator, Pipe Operator, String Match Operator, Code Point Operator, Capture Operator, Ternary Operator ,使其成为一种非常强大的语言。