2012-06-14 16 views

risposta

52

In Ruby, nil in un oggetto (una singola istanza della classe NilClass) in modo che i metodi possano essere chiamati su di esso. nil? è un metodo standard in Ruby che può essere chiamato su tutti gli oggetti e restituisce true per l'oggetto nil e false per qualsiasi altra cosa.

empty? è un metodo Ruby standard su alcuni oggetti come Array, Hash e Stringhe. Il suo comportamento esatto dipenderà dall'oggetto specifico, ma in genere restituisce true se l'oggetto non contiene elementi.

blank? non è un metodo standard, ma rubino è aggiunto tutti oggetti di rotaie e restituisce true per nil, false, vuoto o una stringa spazi.

Perché empty? non è definito per tutti gli oggetti si otterrebbe un NoMethodError se si chiama empty? su nil modo per evitare di dover scrivere le cose come if x.nil? || x.empty? Rails aggiunge il metodo blank?.


Dopo aver risposto, ho scoperto che this question has been asked before quindi è necessario controllare le risposte a quella domanda troppo.

22

sentirlo;)

NIL?

nil.nil? 
#=> true 
[].nil? 
#=> false 
"".nil? 
#=> false 
" ".nil? 
#=> false 

VUOTO?

[].empty? 
#=> true 
nil.empty? 
#=> undefined method 
"".empty? 
#=> true 
" ".empty? 
#=> false 

BLANK?

[].blank? 
#=> true 
nil.blank? 
#=> true 
"".blank? 
#=> true 
" ".blank? 
#=> true 
10

Qualsiasi variabile di ruby ​​è un oggetto, quindi può essere unificata/non impostata (impostata su zero). nil? metodo restituisce vero se non è inizializzata

b = nil 
b.nil? # true 
b = 'string value' 
b.nil? # false 

Array, stringhe, torrenti rubino può contenere non ci sono dati, in modo che possano essere vuoto. Il metodo empty? restituisce vero se così

array = [] 
array.empty? # true 
array << 5 << 4 # [5, 4] 
array.empty? # false 

string = "" # empty line 
string.empty? # true 

blank? è ActiveSupport metodo specifico (disponibile in qualsiasi oggetto) ed è disponibile in RubyOnRails con ActiveSupport. Restituisce vero se l'oggetto è nullo o vuoto.

+2

'vuoto?'se metodo ActiveSupport – fl00r

+0

@ fl00r sì, hai ragione. modificherai la risposta – Ribtoks