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

कैसे जांचें कि रूबी में एक चर परिभाषित किया गया है या नहीं?

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

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

apple = 1

defined?(apple)
# "local-variable"

यदि ऐसा नहीं होता है तो आपको शून्य मिलेगा :

defined?(bacon)
# nil

यह Javascript के typeof . जैसा है ऑपरेटर। यदि आप किसी वस्तु के वर्ग को जानना चाहते हैं तो class . का उपयोग करें इसके बजाय विधि।

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

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

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

परिभाषित चर की जांच करने का एक बेहतर तरीका

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

क्यों?

इसकी कम ऑपरेटर वरीयता . के कारण ।

अगर आप ऐसा कुछ करते हैं:

defined? orange && orange.size

परिणाम "अभिव्यक्ति" है।

क्योंकि orange && orange.size defined? . के तर्क के रूप में व्याख्या की गई है ।

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

defined?(orange) && orange.size

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

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

local_variables.include?(:orange)

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

instance_variable_defined?("@food")

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

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

आवृत्ति चर के बारे में क्या?

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

"सुरक्षित नेविगेटर ऑपरेटर" (रूबी 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. एक मैट्रिक्स क्या है और रूबी में इसका उपयोग कैसे करें?

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

  1. रूबी में हेरेडोक का उपयोग कैसे करें?

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