Ruby 初心者スレッド Part 41
■ このスレッドは過去ログ倉庫に格納されています
0120デフォルトの名無しさん
2011/02/23(水) 17:37:21.52思いっきり大前提として、「+は表示用連結記号ではない」というのをしっかり認識して欲しいと思う
puts "STRING" + var は "STRING" + var つまり "STRING".+(var) の返り値を puts に渡してるに過ぎない
表示するときに便利とかどうでもよくて、String クラスのインスタンスメソッド + の処理結果を利用している
で、String#+ の引数に String クラスのオブジェクト以外がきたとき、どうするのが本来好ましいか
・ 引数のオブジェクトの to_s メソッドを勝手に試して、自身と連結して返す ← まちがい
・ 引数のオブジェクトが文字列と全く同じ動作をする場合にのみ、自身と連結して返す ← せいかい!
ということで、自分と同じ動作をするオブジェクトである場合に限って + で連結を試す
+ の引数になるということは String オブジェクトのメソッドが動作するとみなしてもよいということ
そういう「俺 String オブジェクトのつもりで頑張りますメソッドも作ってきました」という宣言が、to_str メソッド
"#{うめこみ}" で呼ばれる うめこみ#to_s は「オブジェクトを文字列で表現するとこんな感じ」を返す
書いているうちに飽きてきたのでトス
■ このスレッドは過去ログ倉庫に格納されています