Ruby_Array_36

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

class Array (Ruby 3.0.0 リファレンスマニュアル)

インスタンスメソッド

length -> Integer
size -> Integer
  • 配列の長さを返す
    • 空配列のときは0を返す
irb(main):001:0> %w[a b c].length
=> 3

irb(main):002:0> [].length
=> 0
irb(main):001:0> [1, nil, 2].size
=> 3
irb(main):001:0> arr = %w[a b c]
=> ["a", "b", "c"]

irb(main):002:0> arr.push(arr)
=> ["a", "b", "c", [...]]

irb(main):003:0> arr.size
=> 4

irb(main):004:0> arr[2]
=> "c"

irb(main):005:0> arr[3]
=> ["a", "b", "c", [...]]

# memo
# 無限にネストした配列だとこうなる。エラーにはならない。
# Array#lengthとArray#sizeの内部実装は同じようだ

[1] pry(main)> require 'pry-doc'
=> true

[2] pry(main)> show-source Array#length

From: array.c (C Method):
Owner: Array
Visibility: public
Signature: length()
Number of lines: 6

static VALUE
rb_ary_length(VALUE ary)
{
    long len = RARRAY_LEN(ary);
    return LONG2NUM(len);
}

[3] pry(main)> show-source Array#size

From: array.c (C Method):
Owner: Array
Visibility: public
Signature: size()
Number of lines: 6

static VALUE
rb_ary_length(VALUE ary)
{
    long len = RARRAY_LEN(ary);
    return LONG2NUM(len);
}