4

shuffleメソッドとメソッドを提供して、Ruby の String クラスにモンキーパッチを適用したいと思いshuffle!ます。

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

新しい文字列を返します。shuffle!コピーを返す代わりに文字列を変更するメソッドを作成するにはどうすればよいですか?


自分で調べてみたのですが、String のソースコードは MRI では C です。

4

1 に答える 1

9

に割り当てることはできませんself。これはおそらく最初に頭に浮かぶことです。ただし、String#replace文字列の内容を置き換える便利なメソッドがあります。

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

  def shuffle!
    replace shuffle
  end
end

s = 'hello'
s.shuffle!
s # => "lhleo"
于 2013-03-22T16:31:08.557 に答える