Ruby Tips!

RubyのTipsを紹介します

オブジェクトを文字列に変換する

デバッグ時にはオブジェクトを文字列に変換して内容を確認したい場合がある。

RubyではObjectObject#to_sが定義されているため、明示的に禁止されていない限り、あらゆるオブジェクトを文字列化できる。

obj = Object.new
puts obj.to_s #=> #<Object:0x000000009a0d30>

Object.inspectはオブジェクトの内容を、人間が読める形式の文字列に変換して返すメソッドだ。これはpメソッドで内部的に使用されている。

class Clazz
  def initialize
    @a, @b = 1, 2
	end
end

clazz = Clazz.new

puts clazz.to_s #=> #<Clazz:0x00000002529548>
puts clazz.inspect #=> #<Clazz:0x00000002529548 @a=1, @b=2>
p clazz #=> #<Clazz:0x00000002529548 @a=1, @b=2>

ppライブラリには、pを更に強化したppメソッドが用意されている。このメソッドは、複雑なオブジェクトをpよりも視覚的にわかりやすく表示してくれる。

require 'pp'

people = [{name:"alice", age:16}, {name:"bob", age:24}, {name:"carol", age:30}]

p people #=> [{:name=>"alice", :age=>16}, {:name=>"bob", :age=>24}, {:name=>"carol", :age=>30}]
pp people
=begin
[{:name=>"alice", :age=>16},
 {:name=>"bob", :age=>24},
 {:name=>"carol", :age=>30}]
=end