Saya menghabiskan banyak waktu debugging skrip baru-baru ini, dan ketika saya akhirnya menemukan masalah itu karena kode yang terlihat seperti ini:
class Foo {
has $.bar;
method () {
# do stuff
$!.bar;
}
}
Ternyata masalahnya adalah dengan itu $!.bar
, yang seharusnya $!bar
atau $.bar
. Saya mengerti.
Tapi mengapa ini tidak mati ?
Melihat ini secara lebih detail, sepertinya masalah di sini adalah bahwa saya sedang mencoba untuk memanggil (tidak ada) metode bar
pada $!
, yang pada saat ini adalah Nil
karena belum ada kesalahan.
Dan sepertinya saya benar-benar dapat memanggil metode apa pun yang saya inginkan Nil
dan mereka semua diam-diam kembali Nil
, termasuk hal-hal seperti Nil.this-is-a-fake-method
dan Nil.reverse-entropy(123)
.
Apakah ini fitur? Jika demikian, apa alasannya?