Je me retrouve à plusieurs reprises à la recherche d'une définition claire des différences de nil?, blank?et empty?en Ruby on Rails. Voici le plus proche que je suis venu:
blank?les objets sont faux, vides ou une chaîne d'espaces. Par exemple,""," ",nil,[]et{}sont vides.nil?les objets sont des instances de NilClass.empty?les objets sont spécifiques à la classe et la définition varie d'une classe à l'autre. Une chaîne est vide si elle n'a pas de caractères et un tableau est vide s'il ne contient aucun élément.
Y a-t-il quelque chose qui manque ou une comparaison plus étroite qui peut être faite?
:nil?est défini sur ::Kernelet réécrite sur ::NilClass, tout :empty?est mis en œuvre séparément sur de nombreuses classes ( en mode natif sur ::String, ::Array, ::Hashet non en mode natif sur d' autres classes comme ::Setde stdlib et ::ActiveRecord::Relationde rails). Donc, :nil?est disponible dans toutes les sous-classes de ::Objectet aussi dans chaque classe qui comprend ::Kernelpar elle-même, où :empty?doit être implémentée ou incluse spécifiquement dans vos classes.
nilconcept, commencez ici .
[1] pry(main)> [].blank? => true



present?. En effet,blank?renvoie true pour un tableau vide.