Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

Ruby में वेरिएबल परिभाषा सत्यापित करें: एक सरल गाइड

Ruby के पास यह defined? कीवर्ड है जो आपको यह जांचने में मदद करता है कि कोई वेरिएबल परिभाषित है या नहीं।

यदि वेरिएबल मौजूद है तो आपको उसका प्रकार मिलेगा:

 apple = 1 defined?(apple) # "local-variable" 

यदि नहीं है तो आपको nil मिलेगा:

 defined?(bacon) # nil 

यह Javascript के typeof ऑपरेटर की तरह है। यदि आप किसी ऑब्जेक्ट की क्लास जानना चाहते हैं तो इसके बजाय class मेथड का उपयोग करें।

ध्यान देने योग्य कुछ दिलचस्प बिंदु:

  • defined? एक कीवर्ड है, मेथड नहीं
  • defined? Ruby की उन कुछ चीजों में से एक है जो प्रश्न चिह्न पर समाप्त होती है, लेकिन true या false वापस करने के सामान्य कन्वेंशन का पालन नहीं करती
  • defined? एक nil मान और एक वेरिएबल के बीच अंतर बता सकता है जिसे कभी सेट नहीं किया गया है

ये विशेष गुण इस कीवर्ड को सीखने लायक बनाते हैं।

परिभाषित वेरिएबल्स की जांच का एक बेहतर तरीका

यह कीवर्ड उपयोगी हो सकता है, लेकिन इसकी कुछ समस्याएं हैं।

क्यों?

इसके कम ऑपरेटर प्रीसिडेंस के कारण।

यदि आप ऐसा कुछ करते हैं:

 defined? orange && orange.size 

परिणाम "expression" होगा।

क्योंकि orange && orange.size को defined? का आर्गुमेंट माना जाता है।

इसे करने का सही तरीका होगा:

 defined?(orange) && orange.size 

Ruby के पास यह जांचने के अन्य तरीके हैं कि कोई वेरिएबल परिभाषित किया गया है या नहीं।

स्थानीय वेरिएबल्स के लिए:

 local_variables.include?(:orange) 

इंस्टेंस वेरिएबल्स के लिए:

 instance_variable_defined?("@food") 

लेकिन आप उनमें से किसी का भी उपयोग नहीं करना चाहते।

99% मामलों में, यदि कोई स्थानीय वेरिएबल गायब है तो आपके पास टाइपो है या किसी ने उस वेरिएबल को घोषित करना भूल गया है।

इंस्टेंस वेरिएबल्स के बारे में क्या?

अपरिभाषित इंस्टेंस वेरिएबल्स हमेशा nil होते हैं, इसलिए आप इसकी जांच करना चाहते हैं।

"सेफ नेविगेटर ऑपरेटर" आज़माएं (Ruby 2.3+) जो केवल तभी मेथड कॉल करता है जब वेरिएबल nil नहीं है।

यहां एक उदाहरण है:

 if @user&.country == "Spain" # ... end 

यह इसके बराबर है:

 if @user && @user.country == "Spain" # ... end 

ये defined? कीवर्ड जितने सार्वभौमिक नहीं हैं, लेकिन वे अधिक अनुमानित हैं और त्रुटियों की संभावना कम है।

जांचें कि क्या कोई मेथड परिभाषित है

आप defined? का उपयोग यह जांचने के लिए कर सकते हैं कि कोई मेथड परिभाषित है या नहीं, लेकिन यह इतना व्यावहारिक नहीं है।

उदाहरण:

 defined?(puts) # "method" 

क्योंकि यह एक कीवर्ड है न कि मेथड, आप इसे किसी ऑब्जेक्ट के साथ उपयोग नहीं कर सकते।

मेरा मतलब यह है:

 [].defined?(:size) # undefined method `defined?' for []:Array 

आप respond_to? मेथड ढूंढ रहे हैं।

यहां इसका उपयोग कैसे करें:

 [].respond_to?(:size) # true [].respond_to?(:orange) # false 

जांचें कि क्या कोई क्लास मौजूद है

उदाहरण:

 defined?(Object) # "constant" defined?(A) # nil 

एक बेहतर विकल्प const_defined? मेथड का उपयोग करना है।

इस तरह:

 Object.const_defined?(:String) # true Object.const_defined?(:A) # false 

सारांश

वहां आपने सीखा, किसी दिए गए वेरिएबल, क्लास या मेथड के अस्तित्व की जांच करने का एक आसान तरीका!

वेरिएबल्स के साथ काम करते समय आप ज्यादातर समय यह जांचना चाहते हैं कि वे nil हैं या नहीं, बजाय इसके कि वे परिभाषित हैं या नहीं। या इससे भी बेहतर, वेरिएबल को एक ज्ञात क्लास में परिवर्तित करने के लिए रूपांतरण मेथड का उपयोग करें।

मुझे उम्मीद है कि आपको यह लेख उपयोगी लगा! यदि हां तो कृपया साझा करें ताकि अधिक लोग इसका आनंद ले सकें।


  1. रूबी में एनवायरनमेंट वेरिएबल्स मास्टर करें: एक व्यावहारिक मार्गदर्शिका रूबी में एनवायरनमेंट वेरिएबल्स मास्टर करें: एक व्यावहारिक मार्गदर्शिका

    एक एनवायरनमेंट वेरिएबल एक कुंजी/मान जोड़ी है, यह इस तरह दिखती है: KEY=VALUE हम इन वेरिएबल्स का उपयोग अपने कंप्यूटर में सभी प्रोग्राम्स के बीच कॉन्फ़िगरेशन विकल्प साझा करने के लिए करते हैं। यही कारण है कि यह सीखना महत्वपूर्ण है कि वे कैसे काम करते हैं और ENV विशेष वेरिएबल का उपयोग करके अपने रूबी प्

  1. रूबी मैट्रिक्स को समझना: परिभाषा, अनुप्रयोग और उन्हें कैसे बनाएं रूबी मैट्रिक्स को समझना: परिभाषा, अनुप्रयोग और उन्हें कैसे बनाएं

    मैट्रिक्स एक 2D (2-डायमेंशनल) ऐरे है जिसका उपयोग स्प्रेडशीट जैसे डेटा को स्टोर और काम करने के लिए किया जा सकता है। इनका उपयोग किया जा सकता है: टेबल गेम में बोर्ड को दर्शाना (शतरंज, चेकर्स, आदि) आंकड़े और डेटा विश्लेषण प्लॉट्स और ग्राफ़ उत्पन्न करना क्योंकि यह एक शक्तिशाली डेटा संरचना है इसलिए इसका

  1. - रूबी में Heredoc में महारत हासिल करें: मल्टी-लाइन स्ट्रिंग्स के लिए व्यावहारिक गाइड

    हेरेडोक क्या है? हेरेडोक मल्टी-लाइन स्ट्रिंग को परिभाषित करने का एक तरीका है, जबकि मूल इंडेंटेशन और फॉर्मेटिंग को बनाए रखता है। इसका उपयोग SQL या HTML जैसे कोड स्निपेट्स एम्बेड करने के लिए किया जाता है। यहाँ एक उदाहरण है: query = <<-SQL SELECT * FROM food WHERE healthy = true SQL आप रूबी में हेरेडोक