Test de la chaîne vide ou nil-value

J’essaie de définir une variable conditionnellement en Ruby. Je dois le définir si la variable est nulle ou vide (chaîne de longueur 0). Je suis venu avec les éléments suivants:

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

Bien que cela fonctionne, il ne me semble pas très Ruby. Est-ce une manière plus succincte d’exprimer ce qui précède?

La deuxième clause n’a pas besoin de !variable.nil? check – si l’évaluation atteint ce point, variable.nil est garanti faux (à cause d’un court-circuit ).

Cela devrait suffire:

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

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

Un object est vide s’il est faux, vide ou une chaîne d’espacement. Par exemple, "" , " " , nil , [] et {} sont tous vides.

Si vous êtes 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? 
 variable = id if variable.to_s.empty?