J'ai passé beaucoup de temps à déboguer un script récemment, et quand j'ai finalement trouvé le problème, c'était à cause du code qui ressemblait à ceci:
class Foo {
has $.bar;
method () {
# do stuff
$!.bar;
}
}
Il s'est avéré que le problème était avec cela $!.bar, qui aurait dû être soit $!barou $.bar. J'ai compris.
Mais pourquoi cela ne meurt-il pas ?
En regardant plus en détail, il semble que la question ici est que je suis en train d'appeler une méthode (inexistante) barsur $!, qui à ce stade est Nilparce qu'il n'y a pas eu d'erreurs.
Et il semble que je puisse réellement appeler n'importe quelle méthode que je veux Nilet ils reviennent tous en silence Nil, y compris des trucs comme Nil.this-is-a-fake-methodet Nil.reverse-entropy(123).
Est-ce une fonctionnalité? Si oui, quelle est la justification?