在Elixir中模拟三元运算符

时间:2016-06-25 13:45:11

标签: elixir ternary-operator

如何在Elixir中进行类似的条件性单行检查?

if (x > 0) ? x : nil

这是elixir世界中唯一的等价物吗?

if true, do: 1, else: 2

4 个答案:

答案 0 :(得分:23)

对我来说,if IS 相当于一个三元运算符,因为它评估的值对于其他各种语言都没有。

所以x = if false, do: 1, else: 2

基本上是x = false? 1 : 2

不确定为什么Ruby采用它(如果你来自Ruby),因为它具有可分配的if语句。在C中,三元组作为具有等效if语句的代码膨胀是有用的。当然C程序员急需简洁,并且很多嵌套在嵌套的三元组上:)

答案 1 :(得分:13)

是的,在Elixir中没有像三元运算符那样的东西。 if的关键字版本可能是最接近的。

if condition, do: true_expr, else: flase_expr

答案 2 :(得分:8)

我在tweet

中看到了这个替代方案
is_it_true && "TRUE" || "FALSE"

答案 3 :(得分:0)

一个未提及且更冗长的替代方案是

case condition do true -> true_expr; _ -> false_expr end