not - ¿Cómo puedo verificar si un objeto es nulo en Ruby on Rails 2?
ruby empty method (4)
Ahora con Ruby 2.3 puedes usar &.
operador (''operador solitario'') para comprobar si es nil
al mismo tiempo que accede a un valor.
@person&.spouse&.name
https://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Operators#Other_operators
Use #try
en #try
lugar para no tener que seguir buscando nil
.
http://api.rubyonrails.org/classes/Object.html#method-i-try
@person.try(:spouse).try(:name)
en lugar de
@person.spouse.name if @person && @person.spouse
Quiero verificar cuando mi objeto @objectname
no es igual a null para mostrar los valores de @objectname
else para mostrar que no se encontraron valores.
Intenté esto:
<% if (@objectname != null) then %>
pero estoy recibiendo un error.
En su ejemplo, simplemente puede reemplazar null
con `nil y funcionará bien.
require ''erb''
template = <<EOS
<% if (@objectname != nil) then %>
@objectname is not nil
<% else %>
@objectname is nil
<% end %>
EOS
@objectname = nil
ERB.new(template, nil, ''>'').result # => " @objectname is nil/n"
@objectname = ''some name''
ERB.new(template, nil, ''>'').result # => " @objectname is not nil/n"
Al contrario de lo que dijo el otro cartel, puedes ver arriba que funciona bien en Ruby. No es común, pero está bien.
#blank?
y #present?
tener otras implicaciones Específicamente, si el objeto responde a #empty?
, verificarán si está vacío. Si va a http://api.rubyonrails.org/ y busca "¿en blanco?", Verá en qué objetos está definido y cómo funciona. Al mirar la definición en Object , vemos "Un objeto está en blanco si es falso, vacío o una cadena de espacio en blanco. Por ejemplo," "," ", nil, [] y {} están en blanco." Debes asegurarte de que esto es lo que quieres.
Además, nada se considera falso, y cualquier cosa que no sea falsa y nula se considera verdadera. Esto significa que puede colocar directamente el objeto en la instrucción if, por lo que una forma más canónica de escribir lo anterior sería
require ''erb''
template = <<EOS
<% if @objectname %>
@objectname is not nil
<% else %>
@objectname is nil
<% end %>
EOS
@objectname = nil
ERB.new(template, nil, ''>'').result # => " @objectname is nil/n"
@objectname = ''some name''
ERB.new(template, nil, ''>'').result # => " @objectname is not nil/n"
Si explícitamente necesitas marcar nil
y no false
, puedes usar #nil?
método, para el cual nil es el único objeto que hará que esto vuelva verdadero.
nil.nil? # => true
false.nil? # => false
Object.new.nil? # => false
Puede verificar si un objeto es nulo (nulo) llamando al presente? o en blanco? .
@object.present?
esto devolverá falso si el proyecto es una cadena vacía o nula.
o puedes usar
@object.blank?
esto es lo mismo que presente? con un golpe y puedes usarlo si no te gusta ''menos''. esto volverá verdadero para una cadena vacía o nula.
es nil
en Ruby, no null
. Y es suficiente decir if @objectname
para probar si no es nulo. Y no, then
. Puede encontrar más información sobre la sintaxis aquí:
http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Control_Structures#if