213 votes

Recherchez les tableau non vide : tout ?

Est-il mauvais vérifier si un tableau n’est pas vide à l’aide de `` méthode ?

Ou est-il préférable d’utiliser `` ?

270voto

Marcel Jackwerth Points 20632

n’est pas le même que dans certains cas.

De la documentation :

Si le bloc n’est pas donné, Ruby ajoute un bloc implicit de {| obj | obj} (c'est-à-dire tout ? retournera true si au moins un des membres de la collection n’est pas faux ou nulle).

95voto

Digital Cake Points 910

La différence entre un tableau de l'évaluation de ses valeurs true ou si son vide.

La méthode empty? vient de la classe Array
http://ruby-doc.org/core-2.0.0/Array.html#method-i-empty-3F

Il est utilisé pour vérifier si le tableau contient quelque chose ou pas. Cela inclut des choses qui donnent de fausses comme nul et faux.

>> a = []
=> []
>> a.empty?
=> true
>> a = [nil, false]
=> [nil, false]
>> a.empty?
=> false
>> a = [nil]
=> [nil]
>> a.empty?
=> false

La méthode any? provient de l'Énumérable module.
http://ruby-doc.org/core-2.0.0/Enumerable.html#method-i-any-3F

Il est utilisé pour évaluer si "tout" des valeurs du tableau est évaluée à true. Des méthodes similaires pour ce n'en sont pas? tous? et un? où tous juste vérifier pour voir combien de fois vrai a pu être évaluée. qui n'a rien à voir avec le nombre de valeurs que l'on retrouve dans un tableau.

cas 1

>> a = []
=> []
>> a.any?
=> false
>> a.one?
=> false
>> a.all?
=> true
>> a.none?
=> true

cas 2

>> a = [nil, true]
=> [nil, true]
>> a.any?
=> true
>> a.one?
=> true
>> a.all?
=> false
>> a.none?
=> false

cas 3

>> a = [true, true]
=> [true, true]
>> a.any?
=> true
>> a.one?
=> false
>> a.all?
=> true
>> a.none?
=> false

33voto

Faisant précéder la déclaration avec un point d’exclamation vous permettra de savoir si le tableau n’est pas vide. Ainsi, dans votre cas-

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X