Python,Java和Scala都有三元运算符。朱莉娅的等价物是什么?
答案 0 :(得分:16)
您是在引用this吗?
a = true
b = 1
c = 2
julia>a ? b : c
1
a = false
julia>a ? b : c
2
答案 1 :(得分:6)
对于内联使用,一个? b:c存在,如前面的答案所述。然而值得注意的是,Julia中的if-else-end在大多数Lisp方言中都起作用(如果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的语言中,它们就像其他所有语句一样,并且具有返回值。
答案 2 :(得分:1)
是的!朱莉娅有一个三元运算符。这是来自Julia文档Julia docs的简单示例:
所谓的“三元运算符” ?:
与if-elseif-else语法密切相关,但是用于需要在单个表达式值之间进行条件选择的情况,而不是条件执行更长的代码块。它是大多数语言中唯一采用三个操作数的运算符而得名的:
a ? b : c
在a
之前的表达式?
是一个条件表达式,如果条件a为true,则三元运算会在:之前对表达式b求值: c
(如果为假)。请注意,:
和?
周围的空格是强制性的:类似:
的表达式不是有效的三元表达式(但是a?b:c
和{ {1}}。
了解此行为的最简单方法是查看示例。在前面的示例中,println调用由所有三个分支共享:唯一的实际选择是要打印哪个文字字符串。使用三元运算符可以更简洁地编写该代码。为了清楚起见,让我们首先尝试双向版本:
?