この記事は、以下のドキュメントを改変(自分なりに整理)して利用しています。
class Array (Ruby 3.0.0 リファレンスマニュアル)
インスタンスメソッド
to_s -> String
inspect -> String
- 自身の情報を人間に読みやすい文字列にして返す
irb(main):001:0> [1, 2, 3].to_s => "[1, 2, 3]" irb(main):002:0> [1, 'a', 3].to_s => "[1, \"a\", 3]"
# to_sとinspectの内部実装は同じようだ [1] pry(main)> require 'pry-doc' => true [2] pry(main)> show-source Array#to_s From: array.c (C Method): Owner: Array Visibility: public Signature: to_s() Number of lines: 6 static VALUE rb_ary_inspect(VALUE ary) { if (RARRAY_LEN(ary) == 0) return rb_usascii_str_new2("[]"); return rb_exec_recursive(inspect_ary, ary, 0); } [3] pry(main)> show-source Array#inspect From: array.c (C Method): Owner: Array Visibility: public Signature: inspect() Number of lines: 6 static VALUE rb_ary_inspect(VALUE ary) { if (RARRAY_LEN(ary) == 0) return rb_usascii_str_new2("[]"); return rb_exec_recursive(inspect_ary, ary, 0); }
メモ
- to_sのほうがinspectよりもメソッド名が3文字短いけど、チーム開発をしているプロダクトならinspectを使ったほうが直感的に意図が把握しやすいのかなぁ
- to_sだと単純に文字列にしている、inspectだと意識して使っている、というふうに今の私は感じてしまう