any?
effectue une itération sur un conteneur, comme un tableau, et examine chaque élément qui lui est transmis pour voir s'il a réussi un test. Si l'on fait, la boucle s'arrête et true
est retourné:
ary = [nil, 1]
ary.any?{ |e| e.nil? } # => true
The documentation explique bien:
Passes each element of the collection to the given block. The method returns true if the block ever returns a value other than false or nil. If the block is not given, Ruby adds an implicit block of { |obj| obj } that will cause any? to return true if at least one of the collection members is not false or nil.
%w[ant bear cat].any? { |word| word.length >= 3 } #=> true
%w[ant bear cat].any? { |word| word.length >= 4 } #=> true
[nil, true, 99].any? #=> true
any?
est l'un d'un certain nombre de tests qui peuvent être appliquées à un tableau de déterminer s'il y a none?
, any?
, one?
ou all?
.
ary.one?{ |e| e == 1 } # => true
ary.none?{ |e| e == 2 } # => true
ary.all? { |e| e.nil? } # => false
Votre code échoue parce que vous essayez d'utiliser une méthode any?
non existante pour une valeur nulle, d'où l'erreur que vous avez: « NoMethodError: méthode non définie tout » pour néant: NilClass "
ary[0] # => nil
ary.first # => nil
ary.first.respond_to?(:'any?') # => false
Vous devez faire attention à ce que vous faites. ary[0]
ou array.first
renvoie l'élément à cet index de tableau, pas un tableau.
empty?
vérifie uniquement si le conteneur contient des éléments. En d'autres termes, a-t-il une taille> 0?
ary.empty? # => false
ary.size == 0 # => false
ary.size > 0 # => true
[].empty? # => true
[].size == 0 # => true
[].size > 0 # => false
Les chiffres ne concerne que les 'nil', pas' nil' ou 'false'. –
Vous avez raison, c'est pourquoi j'ai aussi ajouté le bit à propos de zéro: – onetwopunch