結論
調べ方
- 適当なClassを作って評価してみる。
- これが戻り値の
#inspect
なんじゃないかと思っており、それを確かめたい。
> class AnyClass ; end
> AnyClass
#inspect
を上書き。実行されたら#caller
を吐き出すようにしてみる。
> class AnyClass ; def self.inspect ; caller.to_s ; end ; end
#caller
が吐出されたのでやはり#inspect
が呼ばれているようだ。
- コールスタックを追ってみようかと思ったけど深いからやめた。
> AnyClass
=> [
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/pp.rb:541:in `pretty_print'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/pp.rb:187:in `block in pp'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/prettyprint.rb:273:in `block (2 levels) in group'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/prettyprint.rb:300:in `nest'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/prettyprint.rb:272:in `block in group'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/prettyprint.rb:285:in `group_sub'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/prettyprint.rb:271:in `group'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/pp.rb:187:in `pp'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/color_printer.rb:34:in `pp'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/color_printer.rb:17:in `block in pp'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/2.1.0/pp.rb:146:in `guard_inspect_key'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/color_printer.rb:17:in `pp'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry.rb:23:in `block (2 levels) in <class:Pry>'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pager.rb:33:in `open'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry.rb:21:in `block in <class:Pry>'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:367:in `call'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:367:in `show_result'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:336:in `block in handle_line'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_class.rb:369:in `critical_section'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:335:in `handle_line'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:243:in `block (2 levels) in eval'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `catch'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `block in eval'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `catch'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `eval'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/repl.rb:77:in `block in repl'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/repl.rb:67:in `loop'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/repl.rb:67:in `repl'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/repl.rb:38:in `block in start'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/input_lock.rb:61:in `call'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/input_lock.rb:61:in `__with_ownership'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/input_lock.rb:79:in `with_ownership'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/repl.rb:38:in `start'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/repl.rb:15:in `start'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_class.rb:169:in `start'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/cli.rb:219:in `block in <top (required)>'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/cli.rb:83:in `call'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/cli.rb:83:in `block in parse_options'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/cli.rb:83:in `each'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/cli.rb:83:in `parse_options'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/bin/pry:16:in `<top (required)>'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/bin/pry:23:in `load'",
"/Users/nagai_shinya/.rbenv/versions/2.1.0/bin/pry:23:in `<main>'"
]