0

最後に強打でメソッドをモンキーパッチすることは可能ですか?

モンキーパッチを適用したいのですString.upcase!が、それを達成する方法がわかりません。

問題は、元の文字列オブジェクトを変更したいということです。

次に例を示します。

class String
  def upcase!
    self.mb_chars.upcase.to_s
  end
end

コンソールにそれを入力して試してみると、うまくいきません:

[1] pry(main)> asd="asd"
=> "asd"
[2] pry(main)> asd.upcase
=> "ASD"
[3] pry(main)> asd
=> "asd"
[4] pry(main)> asd.upcase!
=> "ASD"
[5] pry(main)> asd
=> "asd"
4

4 に答える 4

2

あなたの問題は、強打を持つ方法とは無関係です。レシーバー文字列を置き換える場合は、メソッドを使用しますString#replace

class String
  def foo
    replace(whatever_string_you_want_to_replace_the_receiver_with)
  end
end

おそらくmb_chars.upcaseへの引数として置くことができますreplace

于 2013-10-14T15:42:27.227 に答える
0

どうですか:

class String
  def upcase!
     #Your logic here
  end
end
于 2013-10-14T15:32:15.067 に答える