usan - ¿Cuál es el propósito del signo de interrogación(?) Después de una variable en Groovy
signos de interrogacion y exclamacion para niños (2)
Soy nuevo en Grails encontré en muchos ejemplos que una variable puede terminar con un signo de interrogación (?) Como este
boolean equals(other) {
if(other?.is(this))
return true
}
el código anterior contiene Si la condición en ese otro está terminando con a? entonces quiero saber el significado de esa representación
Hay una sutileza de ?.
, el operador de navegación segura , no mencionado en la respuesta de @dmahapatro.
Déjame dar un ejemplo:
def T = [test: true]
def F = [test: false]
def N = null
assert T?.test == true
assert F?.test == false
assert N?.test == null // not false!
En otras palabras, a?.b
es lo mismo que a != null && ab
solo cuando se prueba un valor booleano. La diferencia es que el primero puede evaluar ab
o null
, mientras que el segundo solo puede ser ab
o false
. Esto importa si el valor de la expresión se pasa a otra expresión.
?.
es un operador seguro nulo que se usa para evitar NPE inesperados.
if ( a?.b ) { .. }
es lo mismo que
if ( a != null && a.b ) { .. }
Pero en este caso is()
ya no es seguro, por lo que no lo necesitaría
other.is( this )
debería ser bueno