131 votes

Test pour une chaîne vide ou de valeur nulle

J'essaie de définir une variable de manière conditionnelle en Ruby. J'ai besoin de la définir si la variable est nulle ou vide (chaîne de longueur 0). J'ai trouvé la solution suivante :

variable = id if variable.nil? || (!variable.nil? && variable.empty?)

Bien qu'il fonctionne, il ne me semble pas très proche de Ruby. Existe-t-il une manière plus succincte d'exprimer ce qui précède ?

236voto

Jon Gauthier Points 10173

La deuxième clause n'a pas besoin d'un !variable.nil? vérifier si l'évaluation atteint ce point, variable.nil est garanti comme étant faux (à cause de court-circuitage ).

Cela devrait être suffisant :

variable = id if variable.nil? || variable.empty?

Si vous travaillez avec Ruby on Rails, Object.blank? résout exactement ce problème :

Un objet est vierge s'il est faux, vide, ou une chaîne d'espacement. Par exemple, "" , " " , nil , [] y {} sont tous vides.

77voto

Adrian Teh Points 446

Si tu es dans Rails, .blank? devrait être la méthode que vous recherchez :

a = nil
b = []
c = ""

a.blank? #=> true
b.blank? #=> true
c.blank? #=> true

d = "1"
e = ["1"]

d.blank? #=> false
e.blank? #=> false

Donc la réponse serait :

variable = id if variable.blank?

40voto

sawa Points 62592
variable = id if variable.to_s.empty?

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