我正在經歷一些代碼,我在網上找到,發現如下紅寶石座語法
def change input
('a'..'z').map { |letter| input.downcase.include?(letter) ? '1' : '0' }.join
end
我明白這是什麼代碼正在做什麼。它將採用一個字符串,檢查字符串是否包含字母表中的每個字母,如果爲true,則返回1,如果爲false,則返回0。
但是我不熟悉這個位語法:
?(letter) ? '1' : '0' }
我知道一個問號通常是用來表明該方法會返回一個布爾結果。但我保證爲什麼在爭論後有第二個問號。
此外,據我所知,這將返回1如果爲true,如果爲false則返回0。這就是這個冒號代表的。如果塊中的方法的結果是布爾值,那麼使用這樣的冒號總是可以的嗎?
'條件速記? do_this_if_true:do_this_if_false' –
這實際上會創建一個1和0的字符串,而不僅僅是1或0 - 只是爲了清楚 – nikkypx