Ruby supprimer néant valeurs de la matrice avec .rejeter
J'ai un tableau:
scores = [1, 2, 3, "", 4]
Et je veux supprimer toutes les valeurs vides. Mais lorsque je l'exécute:
puts scores.reject(&:empty?)
J'obtiens une erreur:
undefined method `empty' for 1:Fixnum
Comment puis-je supprimer des valeurs qui ne sont pas des nombres entiers de mon tableau en une seule étape du processus? Je suis à l'aide de Ruby 1.9.3.
- Comment construisez-vous le tableau dans le premier lieu d'avoir des entiers ou des chaînes vides? Semble comme une étrange combinaison pour moi...
Vous devez vous connecter pour publier un commentaire.
C'est aussi simple que:
Noter que si vous prévoyez de mapper les valeurs, vous pouvez le faire en un bloc après:
Bonus si vous voulez faire la même chose, mais vos chiffres sont des chaînes de caractères:
Integer
, pasFixnum
De rejeter
nil
serait:array.compact
Si vous souhaitez supprimer les valeurs vides, vous devez utiliser
blank?
: (nécessite Rails /ActiveSupport)""
," "
,false
,nil
,[]
, et{}
sont vides.Essayez ceci :
Si vous avez vraiment besoin de rejeter
nil
seulement, de sorte qu'il peut être fait comme ceci:Cela a Fonctionné pour moi
ou, comme Fixnum hérite de nombre Entier, vous pouvez aussi aller pour
...si cela semble plus descriptive.
Tableau et Énumérable ont tendance à offrir de beaucoup de manières de faire la même chose.
&:empty?
de travail pour les tables de hachage, les tableaux et les chaînes, mais pas des numéros. La méthode que vous utilisez en rejeter doit être valable pour tous les éléments dans une liste.&:blank?
sera beau travail pour cette raison.