uso usar sociales seguro seguridad segura redes recomendaciones por pasos para navegar navegacion las internet importancia forma definicion con claves caracteristicas ruby ruby-2.3 safe-navigation-operator

ruby - usar - recomendaciones navegacion segura



Operador de navegaciĆ³n segura(&.) Para nil (2)

A medida que Ruby 2.3 introduce el operador de navegación segura ( &. ), También conocido como operador solitario, el comportamiento en el objeto nil parece extraño.

nil.nil? # => true nil&.nil? # => nil

¿Está diseñado para comportarse de esta manera? ¿O algún caso de borde que se escapó al agregar el operador solitario?


Esto es porque nil&.nil? es taquigrafía para nil && nil.nil? . Esto evaluaría a nil && true , que entonces es nil .

(nil && x).nil? Siempre se evalúa como true , para cualquier valor de x .

Si bien la sintaxis tiene poder, este caso específico tiene cierto potencial para convertirse en un ''gotcha'' para un desarrollador:

(stuff&.things).nil? => Esto produce true si las cosas no existen o stuff.things devuelve nil .

vs. el caso siguiente:

stuff&.things&.nil? => Esto produce nil en todos los casos, excepto en el caso en que stuff.things devuelve algo distinto de nil , en cuyo caso devolvería false .

Debido a la dificultad en la lógica booleana normal de diferenciar entre false y nil , es poco probable que esto tenga sentido en la lógica normal.


foo&.bar es la abreviatura de foo && foo.bar , entonces, ¿qué esperaría del resultado de la expresión nil && nil.nil? ¿ser?