2010-08-24 9 views
10

यह सिर्फ एक बेवकूफ सवाल है कि आज सुबह था: क्या हम क्लोजर से स्कैला कक्षाओं का उपयोग कर सकते हैं?क्लोजर में स्कैला कक्षाएं

क्योंकि अगर जवाब है हां, मैं निश्चित रूप से Clojure ^^

+1

स्कैला-2.8 टैग क्यों? क्या उस संस्करण के लिए कुछ विशिष्ट है? –

उत्तर

17

स्काला कक्षाएं जानेंगे जावा वर्गों रहे हैं और आप काफी आसानी से Clojure से जावा वर्गों का उपयोग कर सकते हैं।

मज़ेदार सीखने का आनंद लें। :-)

+1

और क्लौज्रे कक्षाएं ('जेन-क्लास' और 'डेफ्टाइप/डिफ्रेकॉर्ड' का उपयोग करके बनाई गई) का उपयोग स्कैला से भी किया जा सकता है। यह नीचे सभी बाइटकोड है। –

+0

समस्या यह है कि स्कैला विधियों में जावा में बदसूरत और वर्बोज नाम हैं ("+" $ प्लस बन जाता है ...), क्या यह क्लोजर के साथ एक ही बात है? – Aymen

+2

दुर्भाग्य से, हाँ। 'खाली 'की तरह' blank_QMARK' बन जाता है। ऐसा इसलिए है क्योंकि जावा (या JVM?) पहचानकर्ताओं में ऐसे वर्णों का समर्थन नहीं करता है। –

10

स्कैला कक्षाएं, हां। स्केल सिंगलटन ऑब्जेक्ट्स, जावा के समान वर्ष हस्ताक्षर के साथ। स्कैला लक्षण, नहीं। स्कैला implicits, हाँ, तुम जस्ट!

तो उदाहरण के लिए, स्केल संग्रह के मामले में अनुभव "ओके" से हो सकता है, यदि यह केवल आपकी कक्षाएं है, तो असहमत है।

Option.map(f : A => B) 

संभावना नहीं बहुत उपयोगी Clojure से हो रहे हैं, क्योंकि Clojure संकलक scala.FunctionN के उदाहरण में Clojure lambdas चालू नहीं होगा:

+4

मुझे implicits के बारे में पता नहीं है, लेकिन लक्षण इंटरफेस हैं, संभवतः सहायक कक्षाओं के साथ मिलकर। स्कैन/जावा इंटरऑप पर डैनियल स्पिवाक के पास [एक अच्छा लेखन-अप] है (http://www.codecommit.com/blog/java/interop-between-java-and-scala) जावा से लक्षणों का उपयोग करने पर एक सेक्शन सहित; उस से निर्णय लेते हुए, यह उन लक्षणों के लिए कठिन हो जाता है जो "शुद्ध सार" नहीं हैं, लेकिन क्लोजर में उस टेडियम के अधिकांश - शायद लगभग सभी - मैक्रोज़ के साथ संक्षेप में हो सकते हैं। –

2
कह रही है कि इस तरह के रूप स्काला वर्ग है जो फ़ंक्शन पैरामीटर ले, वर्थ

। मैं डैनियल के साथ हूं - मुझे लगता है कि इंटरऑप खराब होगा।

+2

मुझे पूरा यकीन है कि आप उपयोगिता समस्या को हल करने के लिए मैक्रोज़ का उपयोग कर सकते हैं - मूल रूप से क्लोजर लैम्ब्डा को स्कैला.फंक्शनक्शन में लपेटने के लिए मैक्रो प्राप्त करें? – mikera

संबंधित मुद्दे