[英]Does Julia have a ternary conditional operator?
Python、Java 和 Scala 都有三元运算符。 Julia 中的等价物是什么?
你可能指的是这个。
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 返回被执行的表达式的返回值。
这意味着你可以写出类似的东西
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-ish ?: 符号的好处,并且通常更具可读性,但可链接性较差。
大多数语言都有一个与 if-then-else 分开的三元运算符,因为 if 子句是语句,而在类似 lisp 的语言中,它们就像其他所有语言一样是表达式,并且具有返回值。
是的! Julia 有一个三元运算符。 这是Julia 文档中的一个简单示例:
所谓的“三元运算符” ?:
与 if-elseif-else 语法密切相关,但它用于需要在单个表达式值之间进行条件选择的情况,而不是有条件地执行较长的代码块。 它之所以得名,是因为它是大多数语言中唯一采用三个操作数的运算符:
a ? b : c
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.