13

まず最初に、これらの方法に関するドキュメントで2つの有用な記事を見つけました。

all?:コレクションの各要素を指定されたブロックに渡します。ブロックがfalseまたはnilを返さない場合、メソッドはtrueを返します。

any?:コレクションの各要素を指定されたブロックに渡します。ブロックがfalseまたはnil以外の値を返す場合、メソッドはtrueを返します。

しかし、空の配列とハッシュの場合、私は次のようになりました。

irb(main):004:0> [nil, "car", "bus"].all?
=> false
irb(main):005:0> ["nil", "car", "bus"].all?
=> true
irb(main):006:0> [].all?
=> true
irb(main):007:0> ["nil", "car", "bus"].any?
=> true
irb(main):008:0> [nil, "car", "bus"].any?
=> true
irb(main):009:0> [nil].any?
=> false
irb(main):010:0> [].any?
=> false

メソッドの場合falseとの場合に空の配列が私に与える理由を誰かが私に説明できますか?any?trueall?

4

1 に答える 1

16

ブロックがfalseまたはnilを返さない場合、メソッドはtrueを返します。

したがって、ブロックが呼び出されることはないため、もちろん、falseまたはnilを返すことはなく、alltrueを返します。

同じことが当てはまりanyます:

ブロックがfalseまたはnil以外の値を返す場合、メソッドはtrueを返します。

ブロックが呼び出されることはないため、falseまたはnil以外の値を返すことはなく、falseをany返します。

于 2012-11-06T11:22:14.427 に答える