irbでだけ発動する副作用ならできた #のか?
$ irb
> class Array; def inspect; puts "Hello, World!"; return self; end; end
> hoge = :hoge
> piyo = :piyo
> piyo, hoge = piyo, hoge
Hello, World!
=> [:piyo, :hoge]
待って。Array#inspect を再定義してたら、[:piyo, :hoge] は誰が書いてるんだ…
@zundan あれ、最後のlhsの結果が自動でinspectされてるやつ(IRBの機能)じゃないでしょうか?
@tadd はい。それで再定義したArray#inspectが呼ばれてHello, World!してると思ってます。でも、return selfすると=> の右に再定義前のArray#inspectの書いたっぽいものが現れてて、どこに再定義前の動作が残ってるのか理解できてません。irbが名前空間(じゃなくて何だっけ)を分けてたりするのかな?
@zundan あーーそっかそっか、そうですよね、自分が(スタックが)浅かった……失礼しました。
なんか区切ってますよね、irb。irb()とかもあるし。まさにima1zumiさんの出番ではありますw
@zundan => の右側、やはり(素直には)inspect呼んでいなさそう……だけはわかって力尽きました、ばたり。