मुझे लगता है किfoo (& nil) foo (और "proc नहीं") से अलग तरीके से कैसे व्यवहार करता है?
[1, 2, 3].each(&nil)
सवालों से बात काटना से पता चला किसी भी त्रुटि नहीं कारण नहीं है - यह सिर्फ एक प्रगणक देता है।
इसके विपरीत,
[1, 2, 3].each(&"")
TypeError: wrong argument type String (expected Proc)
को जन्म देती है इसके अलावा, &nil
कारणों block_given? झूठी
def block_given_tester
if block_given?
puts "Block given"
else
puts "Block not given"
end
end
block_given_tester(&nil) # => Block not given
वापस जाने के लिए यह क्योंकि NilClass
लागू करता to_proc
नहीं है - मैं RDoc जाँच की।
मैं क्यों यह &nil
करना अच्छा होगा समझ सकता हूँ, लेकिन मुझे यकीन है कि कैसे इसके पूर्ण हो जाने नहीं कर रहा हूँ। क्या यह nil
के तरीकों में से एक है विशेष व्यवहार अन्य वस्तुओं द्वारा साझा नहीं किया गया है?
मुझे लगता है कि आप 1.8 शाखाओं में से एक को देख रहे हैं जो 1.9 शाखाओं में से एक नहीं है। –
हां, यह रूबी 1.8 से है, क्योंकि यह कोड मेरे पास उपलब्ध है। अब मैं रूबी 1.9.2 के लिए कोड डाउनलोड कर रहा हूं यह देखने के लिए कि क्या कुछ बदल गया है या नहीं। –
मैंने रुबी 1.9.2 के लिए अपना जवाब संपादित कर लिया है। –