【问题标题】:what is the difference between .capitalize and .capitalize!(or .map & .map!...etc.) and in ruby [duplicate].capitalize 和 .capitalize!(或 .map 和 .map!...等)和 ruby​​ 有什么区别 [重复]
【发布时间】:2017-05-06 08:49:33
【问题描述】:

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

我试图将每个单词都大写,但是

title = 'stuart little'
a = title.split

a.each do |x|
x.capitalize
end

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

但是如果我添加 !大写

title = 'stuart little'
a = title.split

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

a.join(' ')

最终得到我想要的结果,即“Stuart Little”

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

【问题讨论】:

    标签: ruby


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果你真的想学习我喜欢去源头 为mapmap!。消息来源会告诉你有什么区别

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

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

      【讨论】:

        猜你喜欢
        • 2016-12-24
        • 2016-12-19
        • 1970-01-01
        • 2023-03-04
        • 2014-03-15
        • 2018-03-08
        • 1970-01-01
        • 1970-01-01
        • 2019-04-01
        相关资源
        最近更新 更多