Ruby'资本化!' 悖论

Rom*_*n M 7 ruby

在Ruby中,我们有'bang'方法capitalize!,nil如果没有对字符串进行任何更改,则返回a的奇怪行为.

这意味着我无法将这些命令与其他命令链接,因为它会在返回时有效地销毁链nil.

我试图做的是这样的:

fname =  fullname[0...fullname.index(' ')].capitalize!
Run Code Online (Sandbox Code Playgroud)

它从字符串中提取名字,也应该将其大写.但如果它已经大写,那么存储的字符串fname就是nil.

在课程中,我可以添加另一个声明但是想知道是否有办法做到这一点"不破坏链条".

Han*_*nto 17

使用.capitalize(没有爆炸) - 除非你真的需要它来改变源.


Rob*_*ble 7

由于您的语句不会更改fullname的值,只需执行以下操作:

fname =  fullname[0...fullname.index(' ')].capitalize
Run Code Online (Sandbox Code Playgroud)

如果没有改变,则不返回nil.