2008-11-19 57 views
7

在Ruby中,我們有'bang'方法capitalize!,它具有返回nil的奇怪行爲,如果沒有對字符串進行更改。Ruby'Capitalize!'悖論

這意味着我不能鏈接這個命令與其他因爲它有效地破壞鏈,如果它返回nil

什麼即時試圖做的是這樣的:

fname = fullname[0...fullname.index(' ')].capitalize! 

從一個字符串中提取的第一個名字,應該利用它。但是,如果它已經大寫,存儲在fname中的字符串是nil

在課程中,我可以添加另一個陳述,但想知道是否有辦法做到這一點,「不破壞鏈條」。

回答

17

使用.capitalize(沒有爆炸聲) - 除非你真的需要它來改變聲源。

+0

omg ...我不相信我沒有意識到這一點:(tnx dude – 2008-11-19 23:54:36

7

因爲你的聲明不會改變全稱的價值,只是做:

fname = fullname[0...fullname.index(' ')].capitalize 

沒有返回零,如果不進行任何更改。