Нещодавно я витратив чималий час налагодження сценарію, і коли нарешті знайшов проблему, це було через код, який виглядав приблизно так:
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).
Це особливість? Якщо так, то яке обгрунтування?