Недавно я потратил много времени на отладку скрипта, и когда я наконец нашел проблему, это было из-за кода, который был похож на это:
class Foo {
has $.bar;
method () {
# do stuff
$!.bar;
}
}
Оказалось, проблема была в том $!.bar
, что должно было быть $!bar
или $.bar
. Я понял это.
Но почему это не умирает ?
Глядя на это более подробно, похоже , вопрос здесь в том , что я пытаюсь вызвать (несуществующий) метод bar
на $!
, который в данный момент является , Nil
потому что не было никаких ошибок.
И похоже, что на самом деле я могу вызвать любой метод, который мне нужен, Nil
и все они молча возвращаются Nil
, включая такие вещи, как Nil.this-is-a-fake-method
и Nil.reverse-entropy(123)
.
Это особенность? Если так, в чем причина?