कुछ समय पहले I showedJCR पेड़ के नोड्स और गुणों में हेरफेर करने के लिए ऑपरेटरों के साथ एक डीएसएल कैसे बनाया जाए। यदि सही ढंग से कोड सही कोड पेड़ की ASCII कला चित्र जैसा दिखता है।स्काला कोड निम्नलिखित
root ¦- "movies" -+ { n: Node =>
n ¦= ("title", "Night on Earth")
n ¦= ("length", 123L)
n ¦= ("ratings", 9L::8L::5L::Nil)
n ¦= ("languages", "en"::"it"::"fi"::"fr"::Nil)
n ¦- "cast" -+ { n: Node =>
n ¦= ("Gena Rowlands", "Victoria Snelling")
n ¦= ("Winona Ryder", "Corky")
n ¦= ("Roberto Benigni", "Taxi Driver") }}
जावा में इस संस्करण के बराबर है:
Node movies = root.addNode("movies");
movies.setProperty("title", "Night on Earth");
movies.setProperty("length", 123L);
movies.setProperty("ratings", new String[]{"9", "8", "5"}, PropertyType.LONG);
movies.setProperty("languages", new String[]{"en", "it", "fi", "fr"}, PropertyType.STRING);
Node cast = movies.addNode("cast");
cast.setProperty("Gena Rowlands", "Victoria Snelling");
cast.setProperty("Winona Ryder", "Corky");
cast.setProperty("Roberto Benigni", "Taxi Driver");
जबकि जरूरी उपयोगी नहीं है, यह रचनात्मकता के लिए एक बिंदु के लायक हो सकता है।
बहुत अधिक रचनात्मकता आमतौर पर एक बुरी चीज होती है, क्योंकि यह अपेक्षाओं का उल्लंघन करती है। ऑपरेटर अधिभार सबसे शक्तिशाली होता है जब इसका उपयोग किया जाता है जैसे कि सभी उम्मीद करेंगे: हां, निश्चित रूप से '*' जटिल संख्याओं के साथ-साथ युगल भी बढ़ता है! उदाहरण के लिए, आपके रिटर्न वैरिएबल 'फ्रोडो' नामकरण और एक अस्थायी स्वैप वैरिएबल 'सैम' एक अर्थ में रचनात्मक है, लेकिन यह काफी समझ में नहीं आता है (विशेष रूप से लोगों को रिंग्स के भगवान से अपरिचित लोगों के लिए)। आपके रिटर्न वैरिएबल का नामकरण '<---' और आपके स्वैप वैरिएबल '<--> 'शायद अधिक बेहतर नहीं है। –
स्कैला के लिए नए लोगों के लिए, ध्यान रखें कि स्कैला का "ऑपरेटर सिंटैक्स" सामान्य स्कैला विधियों को कॉल करने का एक अच्छा तरीका है। तो 'x + y'' x। + (Y) 'जैसा ही है। दोनों स्थितियों में, '+' ऑब्जेक्ट 'x' पर एक सामान्य विधि है, जो' Int', 'Double', आदि प्रकार का हो सकता है। ऑपरेटर सिंटैक्स को प्रतीकात्मक नामित विधि की आवश्यकता नहीं है (उदाहरण के लिए, 'list1 ज़िप सूची 2 'काम करता है), लेकिन प्रतीकात्मक रूप से नामित विधि का उपयोग करके स्कैला को अंतर्निहित प्राथमिकता नियम लागू करने की अनुमति मिलती है। –
क्षमा करें, लेकिन SO अभी भी "आपके सभी पसंदीदा एक्स के लिए वाई" प्रश्नों को स्वीकार नहीं कर रहा है। जब तक आपकी वर्तमान समस्या नहीं है * मुझे सभी ऑपरेटरों को सूचीबद्ध करने की आवश्यकता है * या कुछ ऐसे, यह [faq] के अनुसार दायरे से बाहर है। –