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