Ruby_Array_9

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

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

インスタンスメソッド

all? -> bool
all? {|item| ... } -> bool
all?(pattern) -> bool
  • すべての要素が真である場合、trueを返す
    • 偽である要素があればただちにfalseを返す
  • ブロックを伴う場合、各要素に対してブロックを評価し、すべての結果が真である場合にtrueを返す
    • ブロックが偽を返した時点で、ただちにfalseを返す
  • patternを指定した場合、ブロックの代わりに各要素に対してpattern === itemを評価する
irb(main):001:0> [].all?
=> true

irb(main):002:0> [1].all?
=> true

irb(main):003:0> [nil].all?
=> false

# 空配列のパターンは覚えておきたい
irb(main):001:0> [].all? {|v| v > 100 }
=> true

# 覚えておきたい
irb(main):001:0> [1, 2, 3].all? {|v| v > 0 }
=> true
irb(main):001:0> [1, 2, 3].all? {|v| v > 1 }
=> false
irb(main):001:0> arr = ['a', 'b', 'c']
=> ["a", "b", "c"]

irb(main):002:1> arr.all? {|v| v.capitalize!; v == 'A' }
=> false

irb(main):003:0> arr
=> ["A", "B", "c"]

# cが大文字になっていない
# 偽である要素があればただちにfalseを返すことがわかる(bを大文字にして評価して偽)
irb(main):001:0> %w[aa ab bb].all?(/a/)
=> false
irb(main):001:0> [nil, true, 99].all?(Integer)
=> false

# patternにこういう指定もできるのか
any? -> bool
any? {|item| ... } -> bool
any?(pattern) -> bool
  • すべての要素が偽である場合、falseを返す
    • 真である要素があればただちにtrueを返す
  • ブロックを伴う場合、各要素に対してブロックを評価し、すべての結果が偽である場合にtrueを返す
    • ブロックが真を返した時点で、ただちにtrueを返す
  • patternを指定した場合、ブロックの代わりに各要素に対してpattern === itemを評価する
irb(main):001:0> [].any?
=> false

irb(main):002:0> [1].any?
=> true

irb(main):003:0> [nil].any?
=> false

# 空配列のパターンは覚えておきたい
irb(main):001:0> [].any? {|v| v > 100}
=> false

# 覚えておきたい
irb(main):001:1> [1, 2, 3].any? {|v| v > 4}
=> false
irb(main):001:0> [1, 2, 3].any? {|v| v > 2}
=> true
irb(main):001:0> arr = ['a', 'b', 'c']
=> ["a", "b", "c"]

irb(main):002:0> arr.any? {|v| v.capitalize!; v == 'B' }
=> true

irb(main):003:0> arr
=> ["A", "B", "c"]

# cが大文字になっていない
# 真である要素があればただちにfalseを返すことがわかる(bを大文字にして評価して真)
irb(main):001:0> %w[aa ab ac].any?(/a/)
=> true
irb(main):001:0> [nil, true, 99].any?(Integer)
=> true

# patternにこういう指定もできるのか