Pasé un tiempo considerable depurando un script recientemente, y cuando finalmente encontré el problema fue por un código que se veía así:
class Foo {
has $.bar;
method () {
# do stuff
$!.bar;
}
}
Resultó que el problema era con eso $!.bar
, que debería haber sido $!bar
o $.bar
. Entiendo esto.
¿ Pero por qué no muere esto ?
En cuanto a esto con más detalle, parece que el problema aquí es que estoy tratando de llamar a un método (inexistente) bar
de $!
que en este momento es Nil
porque no ha habido ningún error.
Y parece que realmente puedo llamar a cualquier método que quiera Nil
y todos regresan en silencio Nil
, incluyendo cosas como Nil.this-is-a-fake-method
y Nil.reverse-entropy(123)
.
¿Es esta una característica? Si es así, ¿cuál es la razón?