Ruby_Array_31

この記事は、以下のドキュメントを改変(自分なりに整理)して利用しています。

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だと意識して使っている、というふうに今の私は感じてしまう