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!"

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

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

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

elixir_operators.htm