Julia有一个三元条件运算符吗?

时间:2016-09-30 11:04:11

标签: julia ternary-operator

Python,Java和Scala都有三元运算符。朱莉娅的等价物是什么?

3 个答案:

答案 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 : ca之前的表达式?是一个条件表达式,如果条件a为true,则三元运算会在:之前对表达式b求值: c(如果为假)。请注意,:?周围的空格是强制性的:类似:的表达式不是有效的三元表达式(但是a?b:c和{ {1}}。

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

?