2011-12-28 28 views

回答

1

沒有我知道的操作員。你的迴應已經是一條線......如果你真的想要,你可以改變if!除非。

+0

嗯,現在只要我對ruby語法足夠了解,就可以在數組賦值中這麼做=/ something = {a = b,c = d除非d.nil ?;結束}不起作用 – user1118767

+0

你也不能這樣做。你必須分塊建立數組。 – dj2

+0

這與做同樣的事情:a = b如果b *或* something = {:a => b,:c => d}如果d – pguardiario

0

在紅寶石局部變量春天進入存在沒有行分配給他們實際上正在執行:

a #=> NameError ... 
if false 
    a = 1 
end 
a #=> nil 

您的片段相當於

if !b.nil? 
    a = b 
end 

如果b爲零,那麼分配是沒有執行,從前面的例子中,這將設置a的值爲零。如果b不是零,那麼a被設置爲b的值。所以這個(有些奇怪)實際上是一樣的

a = b 

但是,只有當a還不存在,因此做事情的一個非常容易出錯的方式。不要這樣做!

0

爲什麼不:

a = b unless b.nil? 

或:

b.nil? and a = b 

他們不是他們可讀oneliners?

+0

我希望有一個操作符可以在構建花括號內的哈希時使用,看起來像我只需要一塊一塊地構建。 – user1118767

+0

但問題是:你真的需要這樣的操作員嗎?恕我直言,可能有非常有效的反駁這種做法的論點:如果它可能不存在,你將來如何引用'a'?該操作符的語義是否可讀,真正有用?我懷疑這一點。 –