Spędziłem ostatnio dużo czasu na debugowaniu skryptu, a kiedy w końcu znalazłem problem, przyczyną był kod, który wyglądał tak:
class Foo {
has $.bar;
method () {
# do stuff
$!.bar;
}
}
Okazało się, że problem był z $!.bar, który powinien być albo $!baralbo $.bar. Rozumiem.
Ale dlaczego to nie umiera ?
Patrząc na to w sposób bardziej szczegółowy, wygląda na to problemu jest to, że staram się wywołać (nieistniejącą) sposób barna $!, która w tym momencie jest Nil, bo nie było żadnych błędów.
I wygląda na to, że mogę wywołać dowolną metodę, którą chcę, Nili wszystkie one po cichu powracają Nil, w tym rzeczy takie jak Nil.this-is-a-fake-methodi Nil.reverse-entropy(123).
Czy to jest funkcja? Jeśli tak, jakie jest uzasadnienie?