¿Cuándo usar nil, blank, empty? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

Es hay alguna guía sobre cómo diferenciar entre .nil?, .blank? y .empty??

Generalmente siempre estoy confundido en cuanto a cuándo usarlos en mi aplicación, ya que todos parecen significar lo mismo, pero tienen diferentes significados.

¿Alguien tiene alguna hoja de trucos sobre los detalles sangrientos?

Author: the Tin Man, 2009-10-31

4 answers

 172
Author: Karmen Blake,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-20 09:40:38

Aquí hice esta tabla útil con todos los casos introduzca la descripción de la imagen aquí

 177
Author: Julian Popov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-19 09:31:33
  • nil? se define en todos Objects, solo devuelve true en el singleton nil.

  • blank? también se define en todos los objetos, devuelve true si el objeto también responde a empty? y está vacío, o es un valor de tipo false (!object es siempre true).

  • empty? se define en varios objetos de colección, y es true si no tiene elementos. También se define en String.

Tenga en cuenta que blank? es ActiveSupport y no en Carriles 1.8.

 6
Author: cwninja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-06 16:41:06

Encontré una buena explicación aquí :

¿Nada? prueba si el objeto es exactamente nula, es decir, si es el una y única instancia de deseo de NilClass.

Vacío? es un método algunos objetos responde. Usted necesita comprobar el documentación para cada caso. Para ejemplo, y matriz vacía es uno que no es nil (es un array correcto?) y no tiene elementos. Una cadena vacía es uno que no es nil (es una cadena ¿verdad?) y no tiene bytes, Nada.

El espacio en blanco? método que usted pide no pertenece a Ruby, es un Rails ampliación: http://api.rubyonrails.com/classes/Object.html#M000011 .

Si hace clic en el enlace al final de ese post, encontrará que el método blank? simplemente combina las llamadas a los métodos nil? y empty?.

 5
Author: Andrew Hare,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-31 17:21:17