Julia 单线函数中的三元算子
在Julia中,我可能希望编写一个函数,如果输入小于Julia 单线函数中的三元算子,julia,ternary-operator,Julia,Ternary Operator,在Julia中,我可能希望编写一个函数,如果输入小于1,则返回0,如果输入大于或等于1,则返回2。这是一个非常简单的函数,五行if-else结构的冗长程度可能过高。所以我想把它变成一行函数。我能想出的最好办法如下: f(x::Number) = begin (x < 1) && return(0); return(2); end f(x::Number)=开始(xf(1) 2. 朱莉娅>f(0.99) 0 替代解决方案: f(x::Number) = if (x <
1
,则返回0
,如果输入大于或等于1
,则返回2
。这是一个非常简单的函数,五行if-else
结构的冗长程度可能过高。所以我想把它变成一行函数。我能想出的最好办法如下:
f(x::Number) = begin (x < 1) && return(0); return(2); end
f(x::Number)=开始(x<1)和返回(0);返回(2);结束
或
f(x::Number)=开始x<1?(y=0):(y=2);返回(y);结束
有没有更简单的方法来定义这个函数?julia>f(x::Number)=x<1?0 : 2
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
f(带1方法的泛型函数)
julia>f(0)
0
julia>f(1)
2.
朱莉娅>f(0.99)
0
替代解决方案:
f(x::Number) = if (x < 1) 0 else 2 end
f(x::Number)=如果(x<1)0,则结束
Julia中的if-elseif-else语法将返回执行的表达式的值,这使得类C三元运算符变得多余。与中一样,它的所有功能都包含在一个更可读的替代方案中
回顾您以前的尝试,我认为值得一提的是,与Python不同,您很少需要显式使用return()。通常,您可以返回if-elseif-else块返回的任何内容,就像大多数lisp方言中一样。显式返回就像goto或break,在特殊情况下用来中断控制流的东西。好吧,那一个真的盯着我看了,不是吗:-)非常感谢
f(x::Number) = if (x < 1) 0 else 2 end