我對Ruby中的某些三元表達感到非常困惑。ruby中的三重尷尬
我有這樣的表達:
puts respond_to? "greeting".to_sym ? "hello" : "bye"
當然
,這不是我在我的應用程序正在做的,就是給你看。
的事情是,上述表達式返回
false
當它應該返回和hello
,如果該方法存在bye
,如果它不正確的?
如果我改變的表達,
puts respond_to?("greeting".to_sym) ? "hello" : "bye"
返回正確的事情,無論是「你好」,如果它存在,「再見」,否則。
這是怎麼發生的?有沒有關於紅寶石三元表達的東西,我不知道?
只是讓你知道我的應用程序正確的代碼是:
respond_to?(path.to_sym) ? self.send(path) : "#"
這對於數據庫存儲的標題菜單返回正確的道路,如果它不存在,它會簡單地把一個「# 「以避免錯誤。