Elixir - 其他运算符

除了上述运算符之外,Elixir 还提供了一系列其他运算符,使其成为一种非常强大的语言。

连接运算符

Elixir 提供了一个字符串连接运算符"<>"。 这用于连接 2 个字符串。 例如,

IO.puts("Hello"<>" "<>"world")

以上命令生成以下结果 −

Hello World

匹配

匹配运算符'='利用了语言的模式匹配功能。 我们将在后续模式匹配章节中详细讨论该运算符。

请注意,= 不仅仅是一个赋值运算符。 当我们将左侧值作为变量并将右侧值作为文字或另一个变量时,右侧的值将绑定到该变量,即发生赋值。 但如果我们在右侧有一个变量,在左侧有一个文字,就会发生模式匹配。 当两个值都是文字时,情况也是如此。

固定

pin 运算符'^' 是一个一元运算符,用于为变量名称添加前缀。 它确保变量与匹配运算符一起使用时不会被分配值,而是与该值匹配。 例如,

a = 12  #assignment
a = 13  #assignment
^a = 13  #Pattern matching

管道

管道运算符, '|>' 的工作方式类似于 Unix shell 中的管道运算符。 它允许我们将一个函数的输出通过管道传输到另一个函数。 例如,如果我们需要将加法结果通过管道传输到 IO.puts 中,我们将使用 −

(4+3) |> IO.puts

运行上面的程序时,会产生以下结果 −

7

这将识别出我们在 IO.puts 函数中得到了管道的加法结果。 这将在您的控制台上打印 7。

字符串匹配

字符串匹配运算符"=~"在左侧接受一个字符串,在右侧接受一个字符串或正则表达式。 如果右侧的字符串是左侧的子字符串,则返回 true。 如果右侧的正则表达式与左侧的字符串匹配,则返回 true。 否则返回 false。 例如,

IO.puts("tutorialspoint" =~ "poi")  
IO.puts("tutorialspoint" =~ ~r/[a-z]*/)  
IO.puts("tutorialspoint" =~ ~r/[0-9]*/)  

运行上面的程序时,会产生以下结果 −

true
true
true

请注意,Elixir 中的正则表达式以 '~r' 前缀开头。

代码点

它是一个一元运算符,'?' 返回紧邻其右侧的字符的 UTF-8 代码点。 它只能包含一个字符并接受转义序列。 例如,

IO.puts(?a)
IO.puts(?\s)

运行上面的程序时,会产生以下结果 −

97
32

捕获

捕获运算符,'&' 在定义匿名函数时使用。 我们将在函数章节中详细讨论这一点。

三元

Elixir 没有三元运算符。 我们可以使用 if else 语句实现相同的功能 −

a = if true, do: "True!", else: "False!"

In

该运算符检查左侧的项是否存在于右侧的可枚举结构中。 例如,我们可以使用此运算符检查原子列表、元组等中的原子 −

:yes in [:true, :false, :yes]

上述语句返回 true,因为列表中存在 :yes

❮ elixir_operators.html