def reverse_words(s)
s.split.map(&:reverse).join(' ')
end
這段代碼反轉了句子中的每個單詞。但我不明白在代碼中的「&:」。有人可以向我解釋嗎?Ruby代碼什麼是「&:」在這裏做的
def reverse_words(s)
s.split.map(&:reverse).join(' ')
end
這段代碼反轉了句子中的每個單詞。但我不明白在代碼中的「&:」。有人可以向我解釋嗎?Ruby代碼什麼是「&:」在這裏做的
&
表示reverse
引用的是函數,而不是塊。
該方法假定調用者將傳遞一個String對象。
的&
告訴地圖方法,該輸入是一方法的引用,而不是一個標準塊
這與方法參考無關。一個方法引用就像'each(&method(:puts))'。另外,這與'map'無關。 'map'不知道你是直接傳遞一個塊還是通過一元前綴和符號運算符。 –
map
期望的代碼塊有一個參數。你通常會做的是對這樣的說法叫反向:
map {|elt| elt.reverse }
隨着&
語法可以縮短這
map(&:reverse)
結腸是有制定一個符號出了名reverse
的。
*絕對*不是Python。那是Ruby。 – Makoto
看看這個問題http://stackoverflow.com/questions/1217088/what-does-mapname-mean-in-ruby – sdc
SymbolHound是你的朋友,很難Google這樣的事情:http://symbolhound.com/? q = ruby +%26%3A –