Tôi đã dành thời gian đáng kể để gỡ lỗi một tập lệnh gần đây và cuối cùng khi tôi tìm thấy vấn đề là do mã trông như thế này:
class Foo {
has $.bar;
method () {
# do stuff
$!.bar;
}
}
Hóa ra vấn đề là với điều đó $!.bar, mà cần phải có được một trong hai $!barhoặc $.bar. Tôi nhận được điều này.
Nhưng tại sao điều này không chết ?
Nhìn vào này chi tiết hơn, có vẻ như vấn đề ở đây là tôi đang cố gắng để gọi một phương thức (không tồn tại) bartrên $!, mà vào thời điểm này là Nilbởi vì có chưa được bất kỳ lỗi nào.
Và có vẻ như tôi thực sự có thể gọi bất kỳ phương thức nào tôi muốn Nilvà tất cả đều âm thầm trở lại Nil, bao gồm cả những thứ như Nil.this-is-a-fake-methodvà Nil.reverse-entropy(123).
Đây có phải là một tính năng? Nếu vậy, lý do là gì?