मैं अपने आप को बार-बार के मतभेदों की स्पष्ट परिभाषा की तलाश में लगता है nil?, blank?और empty?पर रूबी में। यहाँ मैं आया हूँ निकटतम:
blank?ऑब्जेक्ट झूठे, खाली या एक व्हाट्सएप स्ट्रिंग हैं। उदाहरण के लिए,""," ",nil,[], और{}खाली कर रहे हैं।nil?ऑब्जेक्ट्स NilClass के उदाहरण हैं।empty?ऑब्जेक्ट क्लास-विशिष्ट हैं, और परिभाषा क्लास से क्लास तक भिन्न होती है। यदि कोई वर्ण नहीं है, तो एक स्ट्रिंग खाली है, और यदि कोई आइटम नहीं है, तो एक सरणी खाली है।
क्या कुछ भी गायब है, या एक तंग तुलना की जा सकती है?
:nil?पर परिभाषित किया गया है ::Kernelऔर पर ओवरराइट ::NilClassजबकि, :empty?कई वर्गों पर अलग से कार्यान्वित किया जाता है (मूल रूप से पर ::String, ::Array, ::Hash, और गैर देशी रूप की तरह अन्य वर्गों पर ::Setstdlib से और ::ActiveRecord::Relationरेल से)। तो :nil?सभी उपवर्गों में ::Objectऔर प्रत्येक वर्ग में भी उपलब्ध है ::Kernelजो अपने आप में शामिल है, जहाँ :empty?इसे लागू किया जाना चाहिए या विशेष रूप से आपकी कक्षाओं में शामिल किया जाना चाहिए।
nilअवधारणा को समझने की कोशिश यहाँ से शुरू करते हैं ।
[1] pry(main)> [].blank? => true



present?। ऐसा इसलिए है क्योंकिblank?खाली सरणी के लिए रिटर्न सही है।