Elixir - 运算符
运算符是告诉编译器执行特定数学或逻辑操作的符号。 Elixir 提供了很多运算符。 它们分为以下几类 −
- 算术运算符
- 比较运算符
- 布尔运算符
- 其他运算符
算术运算符
下表列出了 Elixir 语言支持的所有算术运算符。 假设变量 A 为 10,变量 B 为 20,则 −
运算符 | 描述 | 示例 |
---|---|---|
+ | 添加 2 个数字。 | A + B 将给出 30 |
- | 从第一个数字中减去第二个数字。 | A-B将给出-10 |
* | 将两个数字相乘。 | A*B 会给 200 |
/ | 将第一个数字除以第二个数字。 这会将数字转换为浮点数并给出浮点结果 | A/B 给出 0.5。 |
div | 该函数用于获取除法的商。 | div(10,20) 将给出 0 |
rem | 此函数用于获取除法的余数。 | rem(A, B) 将给出 10 |
比较运算符
Elixir 中的比较运算符与大多数其他语言中提供的比较运算符大多相同。 下表总结了 Elixir 中的比较运算符。 假设变量 A 为 10,变量 B 为 20,则 −
运算符 | 描述 | 示例 |
---|---|---|
== | 检查左侧的值是否等于右侧的值(如果类型不同,则类型转换值)。 | A == B 将给出 false |
!= | 检查左侧的值是否不等于右侧的值。 | A != B 将给出 true |
=== | 检查左侧值的类型是否等于右侧值的类型,如果是,则检查相同的值。 | A === B 将给出 false |
!== | 与上面相同,但检查不平等而不是平等。 | A !== B 将给出 true |
> | 检查左操作数的值是否大于右操作数的值; 如果是,则条件成立。 | A > B 将给出 false |
< | 检查左操作数的值是否小于右操作数的值; 如果是,则条件成立。 | A < B 将给出 true |
>= | 检查左操作数的值是否大于或等于右操作数的值; 如果是,则条件成立。 | A >= B 将给出 false |
<= | 检查左操作数的值是否小于或等于右操作数的值; 如果是,则条件成立。 | A <= B 将给出 true |
逻辑运算符
Elixir 提供 6 个逻辑运算符:and, or, not, &&, || 和 !。 前三个 and 或 not 是严格的布尔运算符,这意味着它们希望第一个参数是布尔值。 非布尔参数将引发错误。 而接下来的三个, &&, || 和 ! 是非严格的,不要求我们将第一个值严格作为布尔值。 他们的工作方式与严格的同行相同。 假设变量 A 为 true,变量 B 为 20,则 −
运算符 | 描述 | 示例 |
---|---|---|
and | 检查提供的两个值是否为真,如果是,则返回第二个变量的值。 (逻辑与)。 | A and B 将给出 20 |
or | 检查提供的任一值是否为真。 返回真实值。 否则返回 false。 (逻辑或)。 | A or B 将给出 true |
not | 一元运算符反转给定输入的值。 | not A 将给出 false |
&& | 非严格and。 与and工作方式相同,但不期望第一个参数是布尔值。 | B && A 将给出 20 |
|| | 非严格的or。 与or工作方式相同,但不期望第一个参数是布尔值。 | B || A 将给出 true |
! | 非严格not。 与not相同,但不期望参数是布尔值。 | !A 将给出 false |
注意 − and, or, && 和 || 是短路运算符。 这意味着如果 and 的第一个参数为 false,则不会进一步检查第二个参数。 如果 or 的第一个参数为 true,则不会检查第二个参数。 例如,
false and raise("An error") #这不会引发错误,因为由于 and 运算符的短路性质,raise 函数不会被执行
按位运算符
位运算符作用于位并执行逐位运算。 Elixir 提供按位模块作为 Bitwise 包的一部分,因此为了使用这些模块,您需要使用按位(Bitwise)模块。 要使用它,请在 shell 中输入以下命令 −
use Bitwise
对于以下示例,假设 A 为 5,B 为 6 −
运算符 | 描述 | 示例 |
---|---|---|
&&& | 按位与运算符复制一个位以得到结果(如果它存在于两个操作数中)。 | A &&& B 将给出 4 |
||| | 按位或运算符复制一个位以得到结果(如果它存在于任一操作数中)。 | A ||| B 将给出 7 |
>>> | 按位右移运算符将第一个操作数位向右移动第二个操作数中指定的数字。 | A >>> B 将给出 0 |
<<< | 按位左移运算符将第一个操作数位向左移动第二个操作数中指定的数字。 | A <<< B 将给出 320 |
^^^ | 仅当两个操作数不同时,按位异或运算符才会复制一位结果。 | A ^^^ B 将给出 3 |
~~~ | 一元按位不反转给定数字的位。 | ~~~A 将给出 -6 |
其他运算符
除了上述运算符之外,Elixir 还提供了一系列其他运算符,例如连接运算符、匹配运算符、引脚运算符、管道运算符、字符串匹配运算符、代码点运算符、捕获运算符、三元运算符,这使其成为一种非常强大的语言。