जावा शब्दों में, प्रतीक आंतरिक तार हैं। इसका मतलब है, उदाहरण के लिए, उस संदर्भ समानता तुलना (जावा में eq
और जावा में ==
) जावा में सामान्य समानता तुलना (==
और स्केल में equals
) के समान परिणाम देता है: 'abcd eq 'abcd
सत्य वापस आ जाएगा, जबकि "abcd" eq "abcd"
शायद JVM के आधार पर नहीं हो सकता है whims (ठीक है, यह अक्षर के लिए होना चाहिए, लेकिन सामान्य रूप से गतिशील रूप से बनाए गए तारों के लिए नहीं)।
अन्य भाषाओं जो प्रतीकों का उपयोग लिस्प (जो स्काला की तरह 'abcd
उपयोग करता है), रूबी (:abcd
), Erlang और Prolog हैं (abcd
, वे बजाय प्रतीकों के परमाणुओं कहा जाता है)।
मैं एक प्रतीक का उपयोग करता हूं जब मुझे स्ट्रिंग की संरचना की परवाह नहीं होती है और इसे किसी चीज़ के नाम के रूप में पूरी तरह से उपयोग किया जाता है। उदाहरण के लिए, यदि मेरे पास सीडी का प्रतिनिधित्व करने वाली डेटाबेस तालिका है, जिसमें "मूल्य" नामक कॉलम शामिल है, तो मुझे परवाह नहीं है कि "मूल्य" में दूसरा अक्षर "आर" है, या कॉलम नामों को संयोजित करने के बारे में; इसलिए स्कैला में एक डेटाबेस लाइब्रेरी तालिका और स्तंभ नामों के लिए प्रतीकों का उचित रूप से उपयोग कर सकती है।
स्रोत
2009-04-23 07:58:06
हो सकता है यह शायद याद रखना लायक है कि == स्कैला में करता है।चीज के बराबर होती है, इसलिए वास्तव में अंतर "ईक" विधि का उपयोग करते समय होता है जो संदर्भ समानता करता है। हालांकि, एक बोनस यह है कि प्रतीकों के बीच तुलना बेहद सस्ता है। – Calum
@ कोलम, जैसा कि दो तारों के बीच तुलना है। जावा इंटर्न (अधिक या कम) सभी तारों। –
@Elazar: क्या यह वाकई सच है? मैं इस धारणा के तहत था कि जावा ने केवल अक्षरशः इंटर्न किया था (यानी लगभग सभी तारों को छोटे उदाहरणों में, और उत्पादन सॉफ्टवेयर में लगभग कोई तार नहीं)। कहा जाता है कि प्रतीकों के उपयोग-मामलों आमतौर पर शाब्दिक मूल्यों के रूप में होते हैं (मुझे संदेह है कि आप अक्सर उन्हें खरोंच से बनाते हैं), इसलिए तर्कसंगत रूप से आपको प्राप्त होने वाला मुख्य लाभ केवल एक और वर्णनात्मक प्रकार है। – Calum