ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

PHPでのvar_dump()相当と親クラス・includeモジュールの取得

これも既出であること甚だしく、単なるメモ。
http://arika.org/doc/php-ruby

親クラスの取得:Module#ancestors

$ irb
irb(main):001:0> module Mod1
irb(main):002:1> end
=> nil

irb(main):003:0> class Klass
irb(main):004:1> include Mod1
irb(main):005:1> end
=> Klass

irb(main):006:0> Klass.ancestors
=> [Klass, Mod1, Object, Kernel]

irb(main):006:0> class Klass2 < Klass
irb(main):007:1> end
=> nil

irb(main):008:0> Klass2.ancestors
=> [Klass2, Klass, Mod1, Object, Kernel]

irb(main):012:0> class Klass3
irb(main):013:1> end
irb(main):014:0> Klass3.ancestors
=> [Klass3, Object, Kernel]

で、var_dump()相当はObject#inspectと、表示するだけならKernel#pメソッド。違いは、inspectだと評価結果として文字列表現を返し、pメソッドだと標準出力に出力してしまい、評価結果自体はnilを返す。

irb(main):001:0> S1 = Struct.new(:name, :title)
=> S1

irb(main):004:0> s = S1['My Name', 'Book Title']
=> #<struct S1 name="My Name", title="Book Title">

irb(main):005:0> p s
#<struct S1 name="My Name", title="Book Title">
=> nil

irb(main):006:0> s.inspect
=> "#<struct S1 name=\"My Name\", title=\"Book Title\">"