최근에 스크립트를 디버깅하는 데 상당한 시간을 보냈으며 마침내 문제를 발견했을 때 다음과 같은 코드 때문이었습니다.
class Foo {
has $.bar;
method () {
# do stuff
$!.bar;
}
}
그것은 문제가 그와 함께했다 판명 $!.bar
중 하나 있었어야하는, $!bar
또는 $.bar
. 나는 이것을 얻는다.
그러나 왜 이것이 죽지 않습니까?
더 자세하게 살펴보면, 여기 문제처럼 보인다 나는 (존재하지 않는) 메소드를 호출하는 것을 시도하고 있다는 것입니다 bar
에 $!
이 시점에서, Nil
오류가 없었던 때문입니다.
그리고 실제로 내가 원하는 모든 메소드를 호출 할 수있는 것처럼 보이며 Nil
모두 and Nil
같은 것을 포함하여 모두 자동으로 반환 됩니다.Nil.this-is-a-fake-method
Nil.reverse-entropy(123)
이것이 기능입니까? 그렇다면 근거는 무엇입니까?