Elixir - 运算符



运算符是一个符号,它告诉编译器执行特定的数学或逻辑操作。Elixir 提供了大量的运算符。它们被分为以下几类:

  • 算术运算符
  • 比较运算符
  • 布尔运算符
  • 其他运算符

算术运算符

下表显示了 Elixir 语言支持的所有算术运算符。假设变量A为 10,变量B为 20,则:

显示示例

运算符 描述 示例
+ 加法运算,两个数字相加。 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 or 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

注意 - andor&&|| 是短路运算符。这意味着如果and 的第一个参数为 false,则它不会进一步检查第二个参数。如果or 的第一个参数为 true,则它不会检查第二个参数。例如:

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

位运算符

位运算符对位进行操作,并执行逐位操作。Elixir 提供位运算模块作为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 还提供一系列其他运算符,如连接运算符、匹配运算符、固定运算符、管道运算符、字符串匹配运算符、代码点运算符、捕获运算符、三元运算符,这使得它成为一种非常强大的语言。

显示示例

广告