2008-11-19 48 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 

没有返回零,如果不进行任何更改。