(ruby)(tips)(Stringオブジェクトが持つ文字列の内容を違う文字列に置き換えたい)
rubyのtips一覧は→ http://d.hatena.ne.jp/morakana/20141005/1412679155
たとえば Stringオブジェクトにメソッドを追加するケースがあったとして
そのメソッドの処理内容が
「自分自身の文字列の内容を変更して、自分自身(self)をリターンする」
だったとします
この場合に selfに文字列を代入しようとしても、エラーが出てしまいます
selfではなく新たな文字列をリターンしても問題が無い場合ならそれでもいいんですが
今回は selfが返らないと不都合がある場合を想定しています・・・
実は、解決法は簡単で replaceメソッドを実行するだけです
(おまけとして、ポインタの指している先が変わっていないのもわかりますね)
たとえば Stringオブジェクトにメソッドを追加するケースがあったとして
そのメソッドの処理内容が
「自分自身の文字列の内容を変更して、自分自身(self)をリターンする」
だったとします
この場合に selfに文字列を代入しようとしても、エラーが出てしまいます
selfではなく新たな文字列をリターンしても問題が無い場合ならそれでもいいんですが
今回は selfが返らないと不都合がある場合を想定しています・・・
実は、解決法は簡単で replaceメソッドを実行するだけです
require 'dl' class String def xyz() self.replace('new word') return(self) end end a = 'aaa' puts(a) puts(DL::CPtr[a].to_i()) a.xyz() puts(a) puts(DL::CPtr[a].to_i())自分自身の文字列の内容が変更されているのが確認できます
(おまけとして、ポインタの指している先が変わっていないのもわかりますね)