यहां कीवर्ड और सिंबल के लिए क्लीज डॉक्यूमेंट दिया गया है ।
कीवर्ड प्रतीकात्मक पहचानकर्ता हैं जो स्वयं का मूल्यांकन करते हैं। वे बहुत तेजी से समानता परीक्षण प्रदान करते हैं ...
प्रतीक पहचानकर्ता होते हैं जो आमतौर पर किसी और चीज को संदर्भित करने के लिए उपयोग किए जाते हैं। उन्हें कार्यक्रम के रूप में इस्तेमाल किया जा सकता है ताकि फ़ंक्शन मापदंडों का उल्लेख किया जा सके, बाइंडिंग, वर्ग के नाम और वैश्विक संस्करण ...
आमतौर पर कीवर्ड का उपयोग हल्के "निरंतर स्ट्रिंग्स" के रूप में किया जाता है, उदाहरण के लिए हैश-मैप की कुंजी या मल्टीमॉडल के प्रेषण मूल्यों के लिए। आमतौर पर वेरिएबल और फ़ंक्शंस को नाम देने के लिए सिंबल का इस्तेमाल किया जाता है और मैक्रोज़ और जैसे को छोड़कर उन्हें ऑब्जेक्ट के रूप में हेरफेर करना कम आम है। लेकिन हर जगह आप एक प्रतीक का उपयोग करने से रोकते हैं, जहां आप एक कीवर्ड का उपयोग करते हैं (यदि आप हर समय उन्हें उद्धृत करने में कोई आपत्ति नहीं करते हैं)।
अंतर देखने का सबसे आसान तरीका पढ़ने Keyword.java
और Symbol.java
क्लोजर स्रोत में है। कुछ स्पष्ट कार्यान्वयन अंतर हैं। उदाहरण के लिए क्लोजर में एक प्रतीक में मेटाडाटा हो सकता है और एक कीवर्ड नहीं हो सकता है।
सिंगल-कोलोन सिंटैक्स के अलावा, आप नेमस्पेस-योग्य कीवर्ड बनाने के लिए डबल-कोलोन का उपयोग कर सकते हैं।
user> :foo
:foo
user> ::foo
:user/foo
सामान्य लिस्प में कीवर्ड होते हैं, जैसे कि रूबी और अन्य भाषाएं। वे उन भाषाओं में थोड़ा भिन्न हैं। आम लिस्प कीवर्ड और क्लोजर कीवर्ड के बीच कुछ अंतर:
Clojure में कीवर्ड प्रतीक नहीं हैं।
user> (symbol? :foo)
false
जब तक आप विशेष रूप से उन्हें योग्य नहीं बनाते तब तक कीवर्ड किसी भी नामस्थान से संबंधित नहीं हैं:
user> (namespace :foo)
nil
user> (namespace ::foo)
"user"
( मुझे देखने के लिए चीजों के विचारों को देने के लिए धन्यवाद रेनर जोसविग ।)