导入
if 和 unless 关键字的使用
了解 Elixir 中 if 和 unless 关键字的功能。
在 Elixir 中,我们编写大量小型函数。通过守卫条件(guard clauses)和参数模式匹配,大多数控制流程都可以替代其他语言中常见的控制结构。
不过,Elixir 仍然提供了一小部分控制流构造。我们之所以迟迟才介绍它们,是因为应尽量减少使用。偶尔在代码中加入 cond 或 case 是可以接受的。但在这样做之前,让我们先考虑更符合函数式编程的替代方案。随着编写更多代码,这种优势会变得非常明显——不显式使用控制流的函数通常更短、更专注,也更容易阅读、测试和复用。
if 关键字
在 Elixir 中,if 和 unless 接受两个参数:一个条件和一个关键字列表,该列表可以包含 do: 和 else: 键。如果条件为真,则 if 表达式求值与 do: 对应的代码;否则,求值 else: 的代码。else: 分支可以省略。
1iex> if 1 == 1, do: "true part", else: "false part" 2"true part" 3 4iex> if 1 == 2, do: "true part", else: "false part" 5"false part"
与函数定义类似,Elixir 提供了一些语法糖。我们可以将上面第一个例子写成如下形式:
1iex> if 1 == 1 do 2...> "true part" 3...> else 4...> "false part" 5...> end 6"true part"
unless 关键字
unless 关键字与 if 类似。以下是几个示例:
1iex> unless 1 == 1, do: "error", else: "OK" 2"OK" 3 4iex> unless 1 == 2, do: "OK", else: "error" 5"OK" 6 7iex> unless 1 == 2 do 8...> "OK" 9...> else 10...> "error" 11...> end 12"OK"
if 和 unless 的值就是被求值表达式的返回值。
请在提供的终端中练习这些简单示例。
Terminal