J'essaie de définir une variable conditionnellement en Ruby. Je dois le définir si la variable est nil ou vide (chaîne de longueur 0). Je suis venu avec ce qui suit:
variable = id if variable.nil? || (!variable.nil? && variable.empty?)
Bien que cela fonctionne, cela ne me semble pas très semblable à Ruby. Est-ce une façon plus succincte d’exprimer ce qui précède?
La deuxième clause n'a pas besoin de cocher _!variable.nil?
_: si l'évaluation atteint ce point, il est garanti que _variable.nil
_ est faux (à cause de court-circuit ).
Cela devrait suffire:
_variable = id if variable.nil? || variable.empty?
_
Si vous travaillez avec Ruby sur Rails, Object.blank?
résout ce problème:
Un objet 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?