在Elixir中模拟三元运算符

问题描述 投票:18回答:3

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

if (x > 0) ? x : nil

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

if true, do: 1, else: 2
elixir ternary-operator
3个回答
23
投票

对我来说,if IS相当于一个三元运算符,因为它评估的值对于其他各种语言而言并非如此。

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

基本上是x = false? 1 : 2

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


13
投票

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

if condition, do: true_expr, else: flase_expr

8
投票

我在tweet看到了这个替代品,

is_it_true && "TRUE" || "FALSE"
© www.soinside.com 2019 - 2024. All rights reserved.