Julia 有三元条件运算符吗?

Does Julia have a ternary conditional operator?

Python、Java 和 Scala 有三元运算符。 Julia 中的等价物是什么?

您可能指的是 this

a = true
b = 1
c = 2

julia>a ? b : c
1

a = false

julia>a ? b : c
2

对于内联使用,一个 ? b : c 存在,如前一个答案所述。然而,值得注意的是,Julia 中的 if-else-end 就像大多数 Lisp 方言中的 (if cond expr1 expr2) 一样,它既充当 if 子句又充当三元运算符。因此,if-then-else return 是执行的表达式的 return 值。

意思是你可以这样写

function abs(x)
    if x > 0
        x
    else
        -x
    end
end

这将 return 您想要的。您不必使用 return 语句来中断功能块,您只需 return 由 if 块编辑的值 return。

内联,可以这么写

if (x > 0) x else -x end 

哪个 return 与三元运算符表达式 (x > 0) 相同? x : -x ,但有避免 perl-ish ?: 符号的好处,通常更具可读性,但不易链接。

大多数语言都有一个与 if-then-else 分开的三元运算符,因为 if 子句是语句,而在类似 lisp 的语言中,它们就像其他所有内容一样是表达式,并具有 return 值。

是的! Julia 有一个三元运算符。这是 Julia documentation:

中的一个简单示例

所谓的“三元运算符”,?:,与 if-elseif-else 语法密切相关,但它用于需要在单个表达式值之间进行条件选择的地方,而不是有条件地执行较长的代码块。它的名字来源于大多数语言中唯一接受三个操作数的运算符:

a ? b : c ?之前的表达式a是一个条件表达式,三元运算对表达式b求值,在:之前,如果条件a为真或者表达式c,之后:,如果为假。请注意 ?: 周围的空格是强制性的:像 a?b:c 这样的表达式不是有效的三元表达式(但在 ?:).

了解此行为的最简单方法是查看示例。在前面的示例中,println 调用由所有三个分支共享:唯一真正的选择是打印哪个文字字符串。这可以使用三元运算符写得更简洁。为了清楚起见,让我们先尝试双向版本:

julia> x = 1; y = 2;

julia> println(x < y ? "less than" : "not less than")
less than

julia> x = 1; y = 0;

julia> println(x < y ? "less than" : "not less than")
not less than