proyecto pagina latest land framework comentar and ruby null operators

ruby - pagina - proyecto groovy



¿Ruby tiene sintaxis para un operador de navegación seguro de valores nulos, como en Groovy? (4)

En una aplicación de Rails hay Object#try

Para que puedas hacer

obj1.try(:obj2).try(:value)

o con un bloque (como se dice en los comentarios abajo)

obj.try {|obj| obj.value}

ACTUALIZAR

En ruby ​​2.3 hay operador para esto:

obj&.value&.foo

Que es lo mismo que obj && obj.value && obj.value.foo

En Groovy, hay una buena sintaxis para trabajar con valores nulos.

Por ejemplo, puedo hacer una sentencia if:

if (obj1?.obj2?.value) { }

Esto no lanzará una NullPointerException incluso si obj1 es nulo (se evaluará como falso).

Esto es algo que es muy conveniente, por lo que me pregunto si hay un equivalente de Ruby que haya perdido.




try era la única forma estándar de hacerlo antes de Ruby 2.3. Con Ruby 2.3 puedes hacer:

if obj1&.obj2&.value end

Además, si tiene una estructura hash, puede usar _. Operador con Hashie :

require ''hashie'' myhash = Hashie::Mash.new({foo: {bar: "blah" }}) myhash.foo.bar => "blah" myhash.foo? => true # use "underscore dot" for multi-level testing myhash.foo_.bar? => true myhash.foo_.huh_.what? => false