2010-01-25 18 views

回答

4

它是標題框輸入。塊內部,$ &是內置的,代表當前匹配(\ b \ w,即每個單詞的第一個字母),然後大寫。

2

gsub將正則表達式中匹配的所有內容替換爲塊的結果。所以是的,在這種情況下,你匹配的第一個字母的話,然後用upcased版本取代它。

作爲對塊內的微微離奇的語法,這相當於(也許更容易理解):

def capitalize_words(string) 
    string.gsub(/\b\w/) {|x| x.upcase} 
end 

甚至雨衣:

def capitalize_words(string) 
    string.gsub /\b\w/, &:upcase 
end 

爲正則表達式(禮貌鎬書),\b匹配單詞邊界,\w任何'單詞字符'(字母數字和下劃線)。所以\b\w匹配單詞的第一個字符。

2

你談到的幾件事情我不喜歡Ruby的一個:)

&神奇的變量$包含從以前成功的模式匹配匹配的字符串。所以在這種情況下,它將成爲每個單詞的第一個字符。

這在RDoc的被提及String.gsub:

http://ruby-doc.org/core/classes/String.html#M000817

+0

哦,親愛的。當我把Perl放在後面時,我認爲我逃脫了這種類型的語法...... – 2010-01-25 05:09:43

+0

它只是可選的語法,並且不鼓勵... – Peter 2010-01-25 05:11:31

+0

正如我所說的,我不喜歡Ruby的幾件事之一。 Wish Matz用Perl留下了魔術變量。 – 2010-01-25 05:30:33