在Julia中,我可能想编写一个函数,如果输入小于0
则返回1
,如果输入大于或等于{{则返回2
1}}。这是一个非常简单的函数,五行1
结构的冗长可能过多。所以我试图把它变成一个单行函数。我能想到的最好的是:
if else
或
f(x::Number) = begin (x < 1) && return(0); return(2); end
有没有更简单的方法来定义这个功能?
答案 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,在特殊情况下用来打破控制流的东西。