在 Elixir 中模拟三元运算符

Simulate ternary operator in Elixir

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

if (x > 0) ? x : nil

这就是丹药界唯一的等价物吗?

if true, do: 1, else: 2

是的,Elixir 中没有三元运算符。 if 的关键字版本可能是最接近的:

if condition, do: true_expr, else: false_expr

我在 tweet

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

对我来说,if IS 等价于三元运算符,因为它计算出的值对于其他各种语言来说不是。

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

基本上是x = false? 1 : 2

不确定为什么 Ruby 采用它(如果你来自 Ruby )因为它有可分配的 if 语句。在 C 中,三进制很有用,因为代码会因等效的 if 语句而膨胀。当然,渴望简洁的 C 程序员发疯了,在嵌套的三元结构上嵌套了很多 :)

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

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