2015-05-29 43 views
6

在Julia中,如果輸入小於1,我可能想要編寫一個函數返回0;如果輸入大於或等於1,則返回2。這是一個非常簡單的功能,五行if else結構的冗長可能過多。所以我試圖把它變成一個單行功能。我能想出的最好的是如下:單線函數中的三元運算符

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

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

有沒有簡單的方法來定義這個功能呢?

回答

10
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 
+0

那麼,那一個真的盯着我的臉是不是:-)非常感謝 –

+0

哈哈,沒問題。 – spencerlyon2

2

替代解決方案:

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

對IF-ELSEIF-ELSE在朱莉婭語法將返回被執行表達,IMHO使得C狀三元運算符,而多餘的值。如其中,其所有功能都包含在一個更可讀的替代方案中。看看你以前的嘗試,我認爲值得一提的是,與Python中不同的是,你很少需要明確地使用return()。通常,只要返回if-elseif-else塊返回的內容,就像在大多數lisp方言中一樣。顯式返回就像goto或break,在特殊情況下用來打破控制流。