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