में स्कैला डेटा संरचनाओं तक पहुंचने ऐसा लगता है कि जावा डेटा संरचनाओं के बीच कुछ जादू अनुवाद है जब उन्हें JRuby से एक्सेस किया जाता है; वे सादे रूबी मानचित्र और सरणी जैसे काम करने लगते हैं। हालांकि, स्कैला डेटा संरचनाएं नहीं होती हैं। जेआरबी/स्कैला इंटरऑप के लिए चारों ओर घूमते समय मुझे आश्चर्यजनक रूप से थोड़ा सा पता चला। उदाहरण के लिए, आप स्कैला के Map
और List
प्रकारों पर फिर से कैसे चलेंगे?जेआरबीई
जेआरबीई
उत्तर
निश्चित रूप से आप कर सकते हैं। लेकिन यह थोड़ी-थोड़ी-थोड़ी-कूद है। सूचियों के लिए:
require "/usr/share/scala/lib/scala-library.jar" # load the scala lib
Java::scala.collection.immutable::List.empty.send("::", 1)
.map(lambda{|e|e+1},
Java::scala.collection.immutable.List.canBuildFrom) # by lopex
अब आपके पास जर्बी में एक स्कैला सूची है। आप कुछ अच्छे रूबी एपीआई को आपके लिए निहितार्थ में भर सकते हैं।
द्वारा यदि "पर पुनरावृति" आप के रूप में map
, reduce
, filter
, collect
HOFs (उच्च क्रम कार्यों) इस तरह के उपयोग करने और इतने पर तो आपको कोई समस्या हो जा रहे हैं मतलब है। यह संभव है, लेकिन स्काला में प्राप्त सिंटैक्टिक लालित्य आता है क्योंकि फ़ंक्शन अक्षर लिखना इतना आसान है। क्या संकलक आप के लिए क्या कर रही है जब आप कुछ इस तरह लिखना:
scala> val l1 = List(1, 2, 3)
l1: List[Int] = List(1, 2, 3)
scala> l1.map(i => i * i)
res0: List[Int] = List(1, 4, 9)
... बना सकते हैं और Function1[Int, Int]
का एक उपवर्ग जिसका apply
विधि एकल Int
तर्क एक लेता समारोह शाब्दिक के शरीर का मूल्यांकन करता है का दृष्टांत है ((i => i * i)
)।
किसी भी स्काला विधि का उपयोग करने के लिए जो आपको फ़ंक्शन स्वीकार करता है, आपको वही करना होगा। कुछ की तरह:
scala> class ISquaredF extends Function1[Int, Int] { def apply(i: Int) = i * i }
defined class ISquaredF
scala> (new ISquaredF)(5)
res1: Int = 25
scala> val isf1 = new ISquaredF
isf1: ISquaredF = <function1>
scala> l1.map(isf1)
res2: List[Int] = List(1, 4, 9)
कुल मिलाकर, यह तुलना में यह किसी भी अन्य JVM भाषा से स्काला कोड का उपयोग करने के लिए है स्काला से जावा पुस्तकालयों का उपयोग करने के लिए बेहद आसान है। यही कारण है कि स्काला और जावा क्लाइंट दोनों का समर्थन करना चाहते हैं अक्का जैसे सिस्टम विशेष जावा एपीआई हैं जो स्कैला भाषा के इन हिस्सों से बचते हैं।
desugaring स्पष्टीकरण के लिए धन्यवाद। – devth
- 1. जेआरबीई
- 2. आईआईएस और जेआरबीई
- 3. जावा ऐप (जेआरबीई के माध्यम से)
- 4. किसी ने भी जावाएफएक्स और जेआरबीई मिक्स करने का प्रयास किया?
- 5. एंड्रॉइड जावा विधियों को सीधे कॉल करने के लिए जेआरबीई का उपयोग
- 6. ग्रहण/मेवेन के लिए जेआरबीई परीक्षण ढांचे का उपयोग करने वाला कोई भी व्यक्ति?
- 7. मैं जावा में अपने पीआईडी या लिनक्स पर जेआरबीई कैसे ढूंढूं?
- 8. जावा बाइट सरणी में जेआरबीई स्ट्रिंग को कनवर्ट करें, और फिर वापस
- 9. जो तेज़ है: एमआरआई रूबी या जेआरबी?
- 10. क्लोजर संकलित या व्याख्या की गई है?
- 11. जावा क्लासेस
- 12. रेल पर बनाम रूबी पर जेआरबीबी, क्या अंतर है?
- 13. रेल पर जर्बी के लिए कहां से शुरू करें?
- 14. जावा डीबगर इंटरफ़ेस
- 15. रूबी/पायथन इंटरऑपरेबिलिटी के लिए जेआरबी/जेथन का उपयोग करना?
- 16. एमआरआई/याएआरवी पर जेआरबीआई का उपयोग न करने के मेरे पास क्या कारण होंगे?
- 17. डीबगर में तोड़ने के लिए मैंने अपने रूबी (जेआरबी) कोड में क्या रखा?
- 18. रूबी वेब अनुप्रयोगों के लिए JRuby का उपयोग करें? यह इसके लायक है?
- 19. रूबी डेमन्स और जेआरबी - वैकल्पिक विकल्प
- 20. रुबीमाइन
- 21. विंडोज सर्वर पर एक रूबी अनुप्रयोग होस्ट कर रहा है एक व्यवहार्य सेटअप?
- 22. JRuby प्रदर्शन
- 23. रेल अनुप्रयोग में धागे के अंदर लॉगिंग
- 24. लिनक्स पर नए रेल तैनाती के लिए सर्वोत्तम अभ्यास?
- 25. टॉमकैट पर रेल एप्लिकेशन पर जेआरबीबी को तैनात करने का सबसे अच्छा तरीका क्या है?
- 26. JRuby
- 27. क्या आप बिना स्रोत के रेल आवेदन पर रूबी वितरित कर सकते हैं?
- 28. सभी प्रोसेसर पर रूबी प्रोग्राम चलाना
- 29. मैं एम्बेडेड जेआरबी के साथ रत्न-इन-ए-जार का उपयोग कैसे कर सकता हूं?
- 30. रेल शेड्यूलिंग विकल्पों पर jruby
अद्यतन के लिए धन्यवाद। इसे आज़माकर – devth