Mi ritrovo a volte alla ricerca di una definizione chiara delle differenze di nil?, blank?e empty?in Ruby on Rails. Ecco il più vicino che sono venuto:
blank?gli oggetti sono falsi, vuoti o una stringa di spazi bianchi. Ad esempio,""," ",nil,[], e{}sono vuoti.nil?gli oggetti sono istanze di NilClass.empty?gli oggetti sono specifici della classe e la definizione varia da classe a classe. Una stringa è vuota se non ha caratteri e una matrice è vuota se non contiene elementi.
Manca qualcosa o si può fare un confronto più stretto?
:nil?è definito su ::Kernele sovrascritto su ::NilClass, mentre :empty?è implementato separatamente su molte classi (in modo nativo su ::String, ::Array, ::Hash, e non in modo nativo su altre classi come ::Setda stdlib e ::ActiveRecord::Relationda rotaie). Quindi :nil?è disponibile in tutte le sottoclassi ::Objecte anche in ogni classe che include ::Kernelda sola, dove :empty?deve essere implementata o inclusa specificamente nelle tue classi.
nilconcetto, inizia qui .
[1] pry(main)> [].blank? => true



present?. Questo perchéblank?restituisce true per un array vuoto.