Récemment dans un petit script j'avais le code suivant:
unless(item.nil? or item.emty?)
...
end
Où item est soit nil, soit "", soit "foo".
Je n'aimais pas faire ça partout dans le code, je voulais être plus "DRY" en faisant quelque chose comme:
unless(item.blank?)
...
end
La solution que j'ai trouvé dans un premier temps pour résoudre ce problème "esthétique" était de déclarer la fonction blank? dans String et NilClass; ça conne ça:
class NilClass
def blank?
true
end
end
class String
def blank?
to_s.empty?
end
end
Mais Benjamin C. m'a montrer une manière plus élégante en étendant Object:
class Object
def blank?
respond_to?(:empty?) ? empty? : !self
end
end
Code re-pompé honteusement de rails.
1 commentaire:
Honteusement toi-même :)
Enregistrer un commentaire