.capitalize和.capitalize!(或.map& .map!...等)和ruby

时间:2016-12-21 02:25:18

标签: ruby

学习如何使用Ruby进行编码,并尝试先从测试中学习。 我偶然发现了一些有趣的东西。

我试图把每个字都用来大写,但是

title = 'stuart little'
a = title.split

a.each do |x|
x.capitalize
end

a.join(' ')
这个结果是'stuart little'

但如果我加了! in capitalize

title = 'stuart little'
a = title.split

a.each do |x|
x.capitalize!
end

a.join(' ')

它最终得到我想要的结果'Stuart Little'

只是.capitalize应该工作不应该吗?因为我只是把这些词大写。是什么让.capitalize!在这种情况下工作?

2 个答案:

答案 0 :(得分:0)

当一个方法在Ruby的末尾有!时,它通常被称为bang-method。感叹号表示该方法是另一种方法的危险版本。

在这种情况下,capitalize!将修改您的字符串,而capitalize将返回一个新的字符串对象。由于您稍后调用原始对象(a中的字符串),因此您的代码仅适用于capitalize!。要使代码与capitalize一起使用,您必须将数组的索引设置为方法的结果,例如a[index] = x.capitalize

答案 1 :(得分:0)

如果你真的想学习我喜欢去源头 对于map map!。来源会告诉你有什么区别

  

map-为self的每个元素调用给定的块一次。

  

图! - 为自己的每个元素调用给定的块一次,   用块返回的值替换元素。