2013-08-24 28 views
0

我在這裏有一個函數,用於檢查輸入數組的最後一個元素是否爲散列表。如果是這樣,它將刪除哈希表中的最後一個元素。這來自Ruby Monk第6.2節的解決方案。是什麼?運算符在Ruby中執行

def remove_last(*arguments) 
    options = arguments[-1].is_a?(Hash) ? arguments.pop : {} 
end 

什麼是'?'運算符在...之間做(哈希)? arguments.pop ...

爲什麼在arguments.pop之後還有':{}'。

+1

閱讀Ruby入門書。 – sawa

回答

2

這是一個三元條件運算符。它具有以下形式:

condition ? true_value : false_value 

它評估的條件,當條件爲真假設的true_value的值,false_value當條件是假的。

+0

很好的答案。簡潔。 – anthropomorphic

+1

由於缺乏對被問及的問題的基本理解,您應該投票結束這些問題作爲脫離主題。 – xaxxon

2

這是ternary operator

這就像一個快捷方式到

if arguments[-1]is.A?(Hash) 
    arguments.pop 
else 
    {} 
end 

,只要你有短的,您可以使用此功能,簡潔的if語句

0

這就是所謂的三元運算符

(condition) ? (use_this_if_true) : (use_this_if_false) 

在您給出的示例中,選項將繼續ain arguments.pop如果參數[-1] .is_a?(哈希),否則選項將包含一個空的散列表示{}