रूबी 2.0 या उसके बाद से, private_constant
का उपयोग करके निरंतर निजी बनाना संभव हो गया है, जिसके परिणामस्वरूप निरंतर घोषित मॉड्यूल के बाहर सीधे उपयोग किया जाता है।केवल रूबी स्थिरांक
हालांकि, constants
और const_defined?
अभी भी निजी स्थिरांक लौटाते हैं, और const_get
उन तक पहुंच की अनुमति देता है। प्रोग्रामिंग रूप से निजी स्थिरांक की पहचान करने और रन टाइम पर उन्हें फ़िल्टर करने का कोई तरीका है?
(नोट: What does Module.private_constant do? Is there a way to list only private constants? और उसके जवाब विशेष रूप से इस मामले का पता नहीं है, बल्कि रिवर्स (कैसे केवल निजी स्थिरांक सूची)।)
अद्यतन: हालांकि यह रूप में लग रहा है रूबी 1.9 और 2.0 में, constants
में केवल सार्वजनिक स्थिरांक शामिल थे। 2.1 के रूप में, नो-एर्ग constants
में अभी भी केवल सार्वजनिक स्थिरांक शामिल हैं, लेकिन inherit
false
constants(false)
(यानी, इस मॉड्यूल में परिभाषित केवल स्थिरांक सूचीबद्ध करें, अपने पूर्वजों के मॉड्यूल में नहीं) को निजी स्थिरांक को उजागर करने का दुष्प्रभाव है।
की संभावित डुप्लिकेट http://stackoverflow.com/questions/12944616/what-does-module-private-constant-do-is-there-a -वे-टू-लिस्ट-केवल-निजी-कॉन्स्टा –
वे अभी भी परिभाषित हैं। क्या आप रूबी झूठ बोलना चाहते हैं? – tadman
मैं रूबी 2.1.4 में आपकी समस्या की प्रतिलिपि नहीं बना रहा हूं: '2.1.4: 001> मॉड्यूल फू; एक्स = 1; वाई = 2; private_constant: वाई; समाप्त; Foo.constants 'रिटर्न' [: X] ' –