【问题标题】:How to write String monkeypatch method that will modify it如何编写将修改它的字符串猴子补丁方法
【发布时间】:2013-03-22 16:28:35
【问题描述】:

我想通过提供 shuffleshuffle! 方法来猴子补丁 Ruby 的 String 类。

class String
  def shuffle
    self.split('').shuffle.join
  end
end

它返回一个新字符串。如何编写修改字符串而不是返回副本的shuffle! 方法?


我试图自己弄清楚,但 String 的源代码在 MRI 中是 C 语言。

【问题讨论】:

    标签: ruby monkeypatching


    【解决方案1】:

    您不能分配给self,这可能是您首先想到的。但是,有一个方便的方法String#replace,你知道,它会替换字符串的内容。

    class String
      def shuffle
        split('').shuffle.join
      end
    
      def shuffle!
        replace shuffle
      end
    end
    
    s = 'hello'
    s.shuffle!
    s # => "lhleo"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-19
      • 1970-01-01
      • 2012-10-13
      • 2011-04-22
      • 2016-11-27
      • 1970-01-01
      • 2019-03-29
      • 2011-10-06
      相关资源
      最近更新 更多