¿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?
4 answers
nil?
- comprueba si la variable está haciendo referencia a un objeto o noempty?
- se puede usar para verificar varios tipos de objetos como cadena vacía "" o matriz vacía []blank?
- compruebanil?
oempty?
.
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
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 todosObjects
, solo devuelvetrue
en el singletonnil
.blank?
también se define en todos los objetos, devuelvetrue
si el objeto también responde aempty?
y está vacío, o es un valor de tipofalse
(!object
es siempretrue
).empty?
se define en varios objetos de colección, y estrue
si no tiene elementos. También se define enString
.
Tenga en cuenta que blank?
es ActiveSupport
y no en Carriles 1.8.
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?
.
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