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 $!bar
albo $.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 bar
na $!
, 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ę, Nil
i wszystkie one po cichu powracają Nil
, w tym rzeczy takie jak Nil.this-is-a-fake-method
i Nil.reverse-entropy(123)
.
Czy to jest funkcja? Jeśli tak, jakie jest uzasadnienie?