Недавно я потратил много времени на отладку скрипта, и когда я наконец нашел проблему, это было из-за кода, который был похож на это:
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).
Это особенность? Если так, в чем причина?