Duplicar posible:
A concise explanation of nil v. empty v. blank in Ruby on RailsDiferencia entre .nil ?, .blank? y .empty?
Podría alguien decirme la diferencia entre .nil ?, .blank ?, .empty? en ruby?
Cualquier respuesta será muy apreciada.
Duplicar posible:
A concise explanation of nil v. empty v. blank in Ruby on RailsDiferencia entre .nil ?, .blank? y .empty?
Podría alguien decirme la diferencia entre .nil ?, .blank ?, .empty? en ruby?
Cualquier respuesta será muy apreciada.
En Ruby, nil
en un objeto (una instancia única de la clase NilClass
) por lo que se pueden invocar métodos sobre él. nil?
es un método estándar en Ruby que se puede llamar en todos los objetos y devuelve true
para el objeto nil
y false
para cualquier otra cosa.
empty?
es un método estándar de Ruby en algunos objetos como Arrays, Hashes and Strings. Su comportamiento exacto dependerá del objeto específico, pero generalmente devuelve true
si el objeto no contiene elementos.
blank?
no es un método estándar de Ruby, pero se añade a todos los objetos por medio de carriles y devuelve true
para nil
, false
, o una cadena vacía, espacio en blanco.
Debido empty?
no está definida para todos los objetos que se obtendría un NoMethodError
si se llama a empty?
en nil
lo que para evitar tener que escribir cosas como if x.nil? || x.empty?
rieles agrega el método blank?
.
Después de responder, me encontré con que this question has been asked before por lo que debe comprobar las respuestas a esta pregunta también.
Siéntalo;)
NIL?
nil.nil?
#=> true
[].nil?
#=> false
"".nil?
#=> false
" ".nil?
#=> false
EMPTY?
[].empty?
#=> true
nil.empty?
#=> undefined method
"".empty?
#=> true
" ".empty?
#=> false
BLANK?
[].blank?
#=> true
nil.blank?
#=> true
"".blank?
#=> true
" ".blank?
#=> true
Cualquier variable de ruby es un objeto, por lo que se puede unir/desarmar (poner a cero). nil?
método devuelve verdadero si no se ha inicializado
b = nil
b.nil? # true
b = 'string value'
b.nil? # false
matrices, cadenas, arroyos en Ruby puede contener ningún dato, por lo que puede estar vacío. El método empty?
devuelve verdadero si es así
array = []
array.empty? # true
array << 5 << 4 # [5, 4]
array.empty? # false
string = "" # empty line
string.empty? # true
blank?
es ActiveSupport método específico (disponible en cualquier objeto) y está disponible en RubyOnRails con ActiveSupport. Devuelve verdadero si el objeto es nulo o está vacío.
'blank?'si el método ActiveSupport – fl00r
@ fl00r sí, tienes razón. voy a editar la respuesta – Ribtoks