如何在Elixir中进行类似的条件性单行检查?
if (x > 0) ? x : nil
这是elixir世界中唯一的等价物吗?
if true, do: 1, else: 2
答案 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