ruby on rails - रेल पर रूबी में शून्य v। खाली v। खाली की संक्षिप्त व्याख्या




ruby-on-rails (10)

एक अंतर यह है कि .nil? और .empty? प्रोग्रामिंग भाषा रूबी, जबकि .blank? द्वारा प्रदान की जाने वाली विधियां हैं .blank? कुछ वेब विकास ढांचे रेल द्वारा added गया है।

मैं खुद को बार-बार nil? के मतभेदों की स्पष्ट परिभाषा की तलाश करता हूं nil? blank? , और empty? रेल पर रूबी में। यहां आने वाला सबसे नज़दीक है:

  • blank? वस्तुएं झूठी, खाली, या एक सफेद जगह स्ट्रिंग हैं। उदाहरण के लिए, "" , " " , nil , [] , और {} खाली हैं।

  • nil? वस्तुओं NilClass के उदाहरण हैं।

  • empty? वस्तुएं वर्ग-विशिष्ट हैं, और परिभाषा कक्षा से कक्षा में भिन्न होती है। यदि कोई वर्ण नहीं है तो एक स्ट्रिंग खाली है, और यदि कोई आइटम नहीं है तो एक सरणी खाली है।

क्या कुछ भी गायब है, या एक कठिन तुलना की जा सकती है?


एक विशेष मामला यह है कि एक बूलियन मान शून्य होने का आकलन करने का प्रयास कर रहा है:

false.present? == false
false.blank? == true
false.nil? == false

इस मामले में सिफारिश का उपयोग किया .nil?


त्वरित युक्ति !obj.blank? == obj.present? !obj.blank? == obj.present?

कुछ अभिव्यक्तियों में आंखों पर आसान / आसान हो सकता है


मैंने इस उपयोगी तालिका को सभी मामलों के साथ बनाया है:


हर किसी ने अच्छी तरह से समझाया है कि क्या अंतर है।

मैं रूबी ऑन रेल में जोड़ना चाहता हूं, obj.blank? का उपयोग करना बेहतर है obj.blank? या obj.present? obj.nil? बजाय obj.nil? या obj.empty?

obj.blank? सभी प्रकारों को संभालता है, '' , [] , {} , और यदि मूल्य उपलब्ध नहीं हैं और किसी भी प्रकार की ऑब्जेक्ट पर मान उपलब्ध हैं तो false लौटाता है।


  • सब कुछ जो nil? blank?
  • सबकुछ empty? blank?
  • कुछ भी empty? नहीं है empty? nil?
  • कुछ भी nil? नहीं है nil? empty?

टीएल; डॉ - केवल blank? उपयोग करें blank? और present? जब तक आप "" और " " बीच अंतर करना नहीं चाहते


any? बारे में बस थोड़ा सा नोट any? सिफारिश: वह सही है कि यह आम तौर पर बराबर है !empty? । हालांकि, any? सिर्फ सफेद जगह (एला " " ) की एक स्ट्रिंग पर true हो जाएगा।

और निश्चित रूप से, ऊपर 1.9 टिप्पणी भी देखें।


any? मत भूलना any? जो आमतौर पर !empty? । रेल में मैं आमतौर पर किसी बयान के अंत में कुछ की उपस्थिति की जांच करता हूं, if something या unless something तो blank? जहां से यह हर जगह काम करने लगता है की जरूरत है।


nil? एक मानक रूबी विधि है जिसे सभी ऑब्जेक्ट्स पर बुलाया जा सकता है और ऑब्जेक्ट nil होने पर true लौटाता true :

b = nil
b.nil? # => true

empty? एक मानक रूबी विधि है जिसे स्ट्रिंग्स, एरेज़ और हैश जैसे कुछ ऑब्जेक्ट्स पर बुलाया जा सकता है और यदि इन ऑब्जेक्ट्स में कोई तत्व नहीं true तो true वापस आते हैं:

a = []
a.empty? # => true

b = ["2","4"]
b.empty? # => false

empty? nil वस्तुओं पर नहीं कहा जा सकता है।

blank? एक रेल विधि है जिसे nil वस्तुओं के साथ-साथ खाली वस्तुओं पर भी बुलाया जा सकता है।


nil? किसी भी वस्तु पर इस्तेमाल किया जा सकता है। यह निर्धारित करता है कि ऑब्जेक्ट का कोई मूल्य या नहीं है, जिसमें 'रिक्त' मान शामिल हैं।

उदाहरण के लिए:

example = nil
example.nil?  # true

"".nil?  # false

असल में nil? अगर वस्तु वास्तव में 'शून्य' के बराबर होती है तो केवल तभी सच हो जाएगी।

empty? केवल उन वस्तुओं पर बुलाया जाता है जिन्हें संग्रह माना जाता है। इसमें तारों (पात्रों का संग्रह), हैश (कुंजी / मूल्य जोड़े का संग्रह) और सरणी (मनमानी वस्तुओं का संग्रह) जैसी चीजें शामिल हैं। empty? सच है कि संग्रह में कोई आइटम नहीं है।

उदाहरण के लिए:

"".empty? # true
"hi".empty?   # false
{}.empty?  # true
{"" => ""}.empty?   # false
[].empty?   # true
[nil].empty?  # false

nil.empty?  # NoMethodError: undefined method `empty?' for nil:NilClass

ध्यान दें कि empty? शून्य वस्तुओं पर नहीं कहा जा सकता है क्योंकि शून्य वस्तुएं संग्रह नहीं होती हैं और यह एक अपवाद उठाएगी।

यह भी ध्यान दें कि भले ही संग्रह में आइटम खाली हैं, इसका मतलब यह नहीं है कि संग्रह खाली है।

blank? मूल रूप से nil? संयोजन है nil? और empty? ऑब्जेक्ट्स की जांच करने के लिए यह उपयोगी है जो आप मानते हैं संग्रह हैं, लेकिन यह भी शून्य हो सकता है।







ruby