Python、Java和Scala都有三元运算符。在Julia中相应的是什么?
对于内联使用,如前面的答案所提到的那样,存在一个 ? b : c。然而值得注意的是,在 Julia 中,if-else-end 的工作方式就像大多数 Lisp 方言中的 (if cond expr1 expr2),既充当 if 条件句,也充当三元运算符。因此,if-then-else 返回执行的表达式的返回值。
这意味着您可以编写类似以下的内容:
function abs(x)
if x > 0
x
else
-x
end
end
这将返回您想要的内容。您不必使用return语句来退出函数块,只需返回if块返回的值即可。
在一行中,您可以编写
if (x > 0) x else -x end
这个函数将返回与三元运算符表达式 (x > 0) ? x : -x 相同的结果,但避免了 Perl 风格的 ?: 符号,通常更易读,但链式调用性能较差。
大多数语言都有一个独立于 if-then-else 的三元运算符,因为 if 子句是语句,而在类 Lisp 语言中,它们与其他所有东西一样都是表达式,并且具有返回值。
?:
与if-elseif-else语法密切相关,但它用于需要在单个表达式值之间进行条件选择的情况,而不是在长代码块中进行条件执行。它之所以被称为三元运算符,是因为它是大多数语言中唯一接受三个操作数的运算符:
a ? b : c
在?
之前的表达式a
是条件表达式,如果条件a
为真,则三元运算符计算:
之前的表达式b
,否则计算:
之后的表达式c
。请注意,必须在?
和:
周围留有空格:像a?b:c
这样的表达式不是有效的三元表达式(但在?
和:
之后可以接受换行符)。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
if
、else
) - Bathsheba