मैंने हाल ही में एक स्क्रिप्ट को डिबग करने में काफी समय बिताया, और जब मुझे अंततः समस्या मिली तो यह कोड की वजह से था जो इस तरह दिखता था:
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)
।
क्या यह एक विशेषता है? यदि हां, तो तर्क क्या है?