एक नाम स्थान तथ्य में बस नहीं बनाया जाएगा क्योंकि किसी कीवर्ड या प्रतीक का सामना करना पड़ा है जो यह करने के लिए "संबंधित" होता है, एक ताजा आरईपीएल पर निम्न बातचीत के रूप में दिखाता है:
; SLIME 2010-05-06
user> (-> (.getNamespace :user/foo) symbol)
user
user> (-> (.getNamespace :user/foo) symbol the-ns)
#<Namespace user>
user> (-> (.getNamespace :bar/foo) symbol the-ns)
; java.lang.Exception: No namespace: bar found
हालांकि, इस चिंता का कोई कारण नहीं है। एक कीवर्ड या प्रतीक का "नेमस्पेस" फ़ील्ड सिर्फ एक इंटर्न वाली स्ट्रिंग है; कोई भी मौजूद है, भले ही संबंधित नेमस्पेस ऑब्जेक्ट में कोई संदर्भ न हो। वास्तव में, जैसा ऊपर देखा जा सकता है, .getNamespace
कीवर्ड और प्रतीकों की विधि एक स्ट्रिंग लौटाती है और उसे उस से वास्तविक नामस्थान प्राप्त करने के लिए कुछ हॉप कूदना पड़ता है।
resolve
फ़ंक्शन के साथ नामस्थान-योग्य प्रतीक को हल करने का प्रयास करना भी सुरक्षित है। इस पर ध्यान दिए बिना कि नामस्थान वास्तव में मौजूद है या नहीं; यदि ऐसा नहीं होता है, तो nil
लौटा दिया गया है, जैसा कि यह मौजूद है, लेकिन दिए गए नाम का कोई वारा नहीं है। इसके विपरीत, ns-resolve
, इसके विपरीत, उपरोक्त आरईपीएल से स्निपेट में उल्लिखित एक अपवाद फेंक देगा अगर उसे दिया गया नामस्थान नहीं मिल रहा है।
स्रोत
2010-06-08 00:41:09
मैंने अतीत में कुछ चीजों के लिए यह किया है और इसमें कोई समस्या नहीं है। –