Elixir - 杂项运算符



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

连接运算符

Elixir 提供了一个字符串连接运算符,“<>”。它用于连接两个字符串。例如:

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

以上命令产生以下结果:

Hello World

匹配

匹配运算符“=”使用了该语言的模式匹配特性。我们将在后续关于模式匹配的章节中详细讨论此运算符。

请注意,“=”不仅是赋值运算符。当左值是变量,右值是字面量或另一个变量时,右边的值将绑定到变量,即进行赋值。但是,如果右边是变量,左边是字面量,则会发生模式匹配。当两个值都是字面量时也是如此。

固定

固定运算符“^”是一个一元运算符,用于在变量名前添加前缀。它确保在与匹配运算符一起使用时,该变量不会被赋值,而是与该值匹配。例如:

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
广告