是否有將此函數合併到一個語句中的方法?將兩個語句合併到一個Ruby中返回到一個
def test
err = _invalid_permission
return err if err # this statement
# do something else
end
我想:
def test
return (err = _invalid_permission) if err
# do something else
end
但這是不同的,err
if
後總是nil
或者這一個:
def test
return err if (err = _invalid_permission)
# do something else
end
但是這一次引起undefined local variable or method 'err'
。
解釋什麼,我試圖做的是要縮短這些種方法:
def test
err = _invalid_permission
return err if err
err = _check_another_error
return err if err
err = _and_another_one
return err if err
# and lots more
# do something else when not error
return nil
end
的_invalid_permission
,_check_another_error
和_and_another_one
將返回包含錯誤信息的非空字符串或數組或哈希。
另一個故事,下面看到的答案後,我認爲它可以組合成:
def test
err = _invalid_permission ||
_check_another_error ||
_and_another_one
# and lots more
return err if err
# do something else when not error
return nil
end
我在考慮原件是相當不錯的,而且你擔心過早優化太多。其他人將是一個可讀性問題,並在條件測試中分配值會讓我大喊大叫。 –
顯式優於隱式。 – squiguy
這段代碼沒有任何意義。你想做什麼? – Chuck