मैं अपने खुद के सामान्य map
समारोह लिखने के लिए और कोशिश कर रहा हूँ कि मैं क्या निम्नलिखित के साथ आए हैं है रों। मुझे क्या परिवर्तन करना चाहिए ताकि यह Map
एस के साथ भी काम करे?मेरे अपने सामान्य नक्शा functioni लेखन
5
A
उत्तर
3
निम्नलिखित कोड मेरे लिए काम करता है। मुझे लगता है कि अपने 'map' समारोह बस के रूप में 'मानचित्र # नक्शा()' उसी तरह काम
object App {
def main(args: Array[String]) {
val map1 = Map(1 -> "x", 2 -> "y")
println(map1.map(_._2))
println(map(map1)(_._2))
}
def map[A, B, CC[X] <: Traversable[X], That](xs: CC[A])(f: A => B)(implicit cbf: CanBuildFrom[CC[_], B, That]): That = {
val b = cbf(xs)
for (a <- xs)
b += f(a)
b.result
}
}
उत्पादन सूची (एक्स, वाई) है
5
आपका कोड संकलित करता है तथा ठीक (नोट चलाता है: मैं जब Map
रों पर लागू किया स्काला 2.9.0.1 उपयोग कर रहा हूँ। आप स्काला के किस संस्करण का उपयोग कर रहे हैं उल्लेख करने के लिए चाहते हो सकता है।)
हालांकि अपने map
समारोह हमेशा एक List
रिटर्न तब भी जब यह एक Map
ही वापस जाने के लिए समझ में आता है। आप CC[_]
से CC
बदलकर इससे बच सकते हैं।
def map[A, B, CC <: Traversable[A], That]
(xs: CC)(f: A => B)
(implicit cbf: CanBuildFrom[CC, B, That]): That = {
val b = cbf(xs)
for (a <- xs)
b += f(a)
b.result
}
लेकिन आप जब यह लागू है, जो एक सा दुख की बात है स्पष्ट रूप से इस समारोह टाइप-टिप्पणी करने की जरूरत है: (संबंधित ब्लॉग पोस्ट A Generic Quicksort in Scala।)।
val xs = Map(45 -> 32, 11 -> 9)
map[(Int, Int), (Int, Int), Map[Int, Int], Map[Int, Int]](Map(45 -> 32, 11 -> 9))(identity)
// gives Map(45 -> 32, 11 -> 9)
इस बदसूरत प्रकार की एनोटेशन से बचने के लिए कुछ तरीका होना चाहिए, लेकिन मुझे इसके बारे में पता नहीं है।
संबंधित मुद्दे
- 1. क्या ओकैमल में सामान्य नक्शा()/कम() फ़ंक्शन है?
- 2. नक्शा
- 3. अनुमति मेरे अपने कार्यक्रम (ubuntu)
- 4. लेखन
- 5. नक्शा
- 6. नक्शा
- 7. क्या मेरे पास यह सामान्य [] संपत्ति हो सकती है?
- 8. लेखन फ़ाइल
- 9. लेखन डिबगर्स
- 10. लेखन कुशल सीएसएस
- 11. मेरे अपने हार्डवेयर पर नोड.जेएस होस्टिंग/तैनाती
- 12. std :: नक्शा डालने या std :: नक्शा ढूंढें?
- 13. कॉपी std :: नक्शा डेटा एक और नक्शा
- 14. क्लोजर आलसी नक्शा से आलसी नक्शा
- 15. थ्रेड और फ़ाइल लेखन
- 16. लेखन सी
- 17. लेखन पाइथन
- 18. लेखन Node.js
- 19. Feemarker लेखन
- 20. लेखन अजगर
- 21. लेखन-आउटपुट
- 22. नक्शा एक्टिविटी में शेरलॉकएक्शनबार
- 23. नक्शा Haskell
- 24. नक्शा कैसे
- 25. नक्शा इटेटर
- 26. लेखन बाइट रूबी
- 27. C++ समारोह नक्शा कार्यान्वयन
- 28. लेखन सी # प्लगइन सिस्टम
- 29. लेखन jquery स्थिर उपयोग विधियों
- 30. नक्शा में NoClassDefFoundErrorActivity