单行函数中的三元运算符

时间:2015-05-29 03:52:53

标签: julia ternary-operator

在Julia中,我可能想编写一个函数,如果输入小于0则返回1,如果输入大于或等于{{则返回2 1}}。这是一个非常简单的函数,五行1结构的冗长可能过多。所以我试图把它变成一个单行函数。我能想到的最好的是:

if else

f(x::Number) = begin (x < 1) && return(0); return(2); end

有没有更简单的方法来定义这个功能?

2 个答案:

答案 0 :(得分:11)

julia> f(x::Number) = x < 1 ? 0 : 2
f (generic function with 1 method)

julia> f(0)
0

julia> f(1)
2

julia> f(0.99)
0

答案 1 :(得分:3)

替代解决方案:

f(x::Number) = if (x < 1) 0 else 2 end

Julia 中的if-elseif-else语法将返回执行的表达式的值,这使得类似C的三元运算符变得多余。同样,它的所有功能都包含在更易读的替代方案中。

看看你之前的尝试,我认为值得一提的是,与Python不同,你很少需要明确地使用return()。通常你可以只返回if-elseif-else块返回的内容,就像你在大多数lisp方言中一样。显式返回就像是goto或break,在特殊情况下用来打破控制流的东西。