正如標題詢問,有沒有一個操作員,或一些時髦的班輪做上述?在ruby中,有沒有類似於|| =的賦值語句:a = b if!b.nil?
爲了澄清,如果這是第一次a
被引用,並b
是nil
,一個不應該堅持過去b
是零的評價。
正如標題詢問,有沒有一個操作員,或一些時髦的班輪做上述?在ruby中,有沒有類似於|| =的賦值語句:a = b if!b.nil?
爲了澄清,如果這是第一次a
被引用,並b
是nil
,一個不應該堅持過去b
是零的評價。
沒有我知道的操作員。你的迴應已經是一條線......如果你真的想要,你可以改變if!除非。
嗯,現在只要我對ruby語法足夠了解,就可以在數組賦值中這麼做=/ something = {a = b,c = d除非d.nil ?;結束}不起作用 – user1118767
你也不能這樣做。你必須分塊建立數組。 – dj2
這與做同樣的事情:a = b如果b *或* something = {:a => b,:c => d}如果d – pguardiario
在紅寶石局部變量春天進入存在沒有行分配給他們實際上正在執行:
a #=> NameError ...
if false
a = 1
end
a #=> nil
您的片段相當於
if !b.nil?
a = b
end
如果b爲零,那麼分配是沒有執行,從前面的例子中,這將設置a的值爲零。如果b不是零,那麼a被設置爲b的值。所以這個(有些奇怪)實際上是一樣的
a = b
但是,只有當a
還不存在,因此做事情的一個非常容易出錯的方式。不要這樣做!
爲什麼不:
a = b unless b.nil?
或:
b.nil? and a = b
他們不是他們可讀oneliners?
我希望有一個操作符可以在構建花括號內的哈希時使用,看起來像我只需要一塊一塊地構建。 – user1118767
但問題是:你真的需要這樣的操作員嗎?恕我直言,可能有非常有效的反駁這種做法的論點:如果它可能不存在,你將來如何引用'a'?該操作符的語義是否可讀,真正有用?我懷疑這一點。 –
簽名被刪除,請參閱FAQ。 –