這兩種形式似乎都有困難,利用了Ruby從函數式編程範例中得到的想法:即一切都是一個表達式,因此返回一個值。這是條件語句,即使如此,一個想法,像Java語言不真正支持(例如:
public boolean test() {
boolean x = if (1 > 2) { false; } else { true; };
return x;
}
根本不是語法上有效)。
您可以在Ruby終端看到這一點:
will_be_assigned_nil = false if (1 > 2) # => nil
will_be_assigned_nil # => nil
所以,你的問題。 第一個可以寫成這樣:
if x < y
mininum = x
else
minimum = y
end
二是像在其他語言中的三元運算符,並且等同於:
if x > y
max = x
else
max = y
end
這有助於記住根&遺產的語言當試圖瞭解他們的構造。 Ruby與Perl分享了「不止一個方法去做」的哲學,而慣用的Ruby代碼通常高度重視優雅。
「後表達」風格的條件就是一個很好的例子。如果我有我的方法開始保護表達式,它並不少見,我寫:
raise "Pre-condition x not met" unless x # (or "if !x" , preference thing)
raise "Pre-condition y not met" unless y # etc., etc.
,而不是
if !x
raise "Pre-condition x not met"
end
if !y
raise "Pre-condition y not met"
end
「你能不能幫我寫在普通的if-else語句類似如下這個?」 - 我不明白這個問題。 – 2012-04-22 23:31:34
我改寫了這個問題。 :) – 2012-04-22 23:37:06