Altro
Una spiegazione concisa di nil v. empty v. blank in Ruby on Rails
Mi ritrovo ripetutamente a cercare una chiara definizione delle differenze tra nil?
, blank?
, e empty?
in Ruby on Rails. Ecco il modo in cui mi sono avvicinato di più:
-
Gli oggetti
blank?
sono falsi, vuoti, o una stringa di spazi bianchi. Per esempio,""
," "
,nil
,[]
, e{}
sono vuoti. -
Gli oggetti
nil?
sono istanze di NilClass. -
Gli oggetti
vuoti
sono specifici della classe, e la definizione varia da classe a classe. Una stringa è vuota se non ha caratteri, e un array è vuoto se non contiene elementi.
C'è qualcosa che manca, o un confronto più stretto che può essere fatto?
1093
3
.nil?
può essere usato su qualsiasi oggetto ed è vero se l'oggetto è nullo..empty?
può essere usato su stringhe, array e hash e restituisce true se:L'esecuzione di
.empty?
su qualcosa che è nullo lancia unNoMethodError
.È qui che entra in gioco
.blank?
. È implementato da Rails e opererà su qualsiasi oggetto e funzionerà come.empty?
su stringhe, array e hash..blank?
valuta anche true sulle stringhe che non sono vuote ma contengono solo spazi bianchi:Rails fornisce anche
.present?
, che restituisce la negazione di.blank?
.Array gotcha:
blank?
restituiràfalse
anche se tutti gli elementi di un array sono vuoti. Per determinare lo spazio vuoto in questo caso, usateall?
conblank?
, per esempio:Una differenza è che
.nil?
e.empty?
sono metodi forniti dal linguaggio di programmazione Ruby, mentre.blank?
è qualcosa aggiunto dal framework di sviluppo web Rails.Non dimenticate
any?
che è generalmente!empty?
. In Rails tipicamente controllo la presenza di qualcosa alla fine di una dichiarazione conif qualcosa
ounless qualcosa
poi usoblank?
dove necessario dato che sembra funzionare ovunque.