जावा Iterable<T>
और सी # IEnumerable<T>
के बराबर स्कैला को कैसे कार्यान्वित करें? असल में, मैं चाहता हूं कि मेरा संग्रह मैप करने योग्य, फिल्टर करने योग्य आदि हो। संग्रह वर्ग को किस प्रकार के गुणों का विस्तार करना चाहिए और क्या yield return
और yield break
सी # में गणना करने के लिए आसान हैं?लागू करने योग्य Iterable
8
A
उत्तर
13
Iterable
विशेषता लागू करें। यह आवश्यक है कि iterator
विधि है। अन्य सभी विधियों (map
, filter
, आदि) मुफ्त में आते हैं।
class MyIterable[T](xs: Vector[T]) extends Iterable[T] {
override def iterator = xs.iterator
}
val a = new MyIterable(Vector(1,2,3))
a.map(_+1) // res0: Iterable[Int] = List(2, 3, 4)
a.filter(_%2==1) // res1: Iterable[Int] = List(1, 3)
0
आप scala.collection.Iterable
विशेषता या इसके अपरिवर्तनीय संस्करण का उपयोग कर सकते हैं जो बहुत व्यापक और शक्तिशाली हैं। उम्मीद है कि मदद करेगा।
0
प्रगणक के बारे में, वहाँ स्काला में गणन है, लेकिन सील का उपयोग लक्षण + व्युत्पन्न वर्ग और अधिक लचीला हो रहा है, उदाहरण के लिए:
sealed trait MyEnum {
lazy val value = 0
}
case object MyEnumA extends MyEnum {
override lazy val value = 1
}
case object MyEnumB extends MyEnum {
override lazy val value = 2
}
scala> val a = MyEnumB
a: MyEnumB.type = MyEnumB
scala> a.value
res24: Int = 2
scala> val l = List(MyEnumA,MyEnumB)
l: List[Product with Serializable with MyEnum] = List(MyEnumA, MyEnumB)
scala> l.map(_.value)
res29: List[Int] = List(1, 2)
साथ ही आप किसी भी आंतरिक संरचना के बिना इन वस्तुओं का उपयोग कर सकते , यदि आप उनके स्ट्रिंग प्रस्तुतियों को छोड़कर उन्हें किसी भी चीज़ पर मैप करने की परवाह नहीं करते हैं:
sealed trait MyEnum
case object MyEnumA extends MyEnum
case object MyEnumB extends MyEnum
scala> val a = MyEnumA
a: MyEnumA.type = MyEnumA
scala> a.toString
res21: String = MyEnumA
scala> val l = List(MyEnumA,MyEnumB)
l: List[Product with Serializable with MyEnum] = List(MyEnumA, MyEnumB)
scala> l.map(_.toString)
res30: List[String] = List(MyEnumA, MyEnumB)
संबंधित मुद्दे
- 1. सुनिश्चित करें कि ऑब्जेक्ट्स लागू करने योग्य
- 2. एक Iterable
- 3. जावा में स्ट्रिंग क्लास Iterable लागू क्यों नहीं करता है?
- 4. कुछ iterable
- 5. Iterable <E>
- 6. Iterable से Array
- 7. स्काला मानचित्र iterable
- 8. लागू करने योग्य IDISposable - डिस्पोजेबल फ़ील्ड बनाम डिस्पोजेबल गुण
- 9. केवल पढ़ने योग्य संपत्ति को लागू करने के लिए
- 10. जावा ऐरे को Iterable
- 11. कॉफीस्क्रिप्ट, 'लागू' लागू करने
- 12. यूलाबेल फोकस करने योग्य और टैप करने योग्य (टीवीओएस)
- 13. 'फोकस करने योग्य' और 'क्लिक करने योग्य'
- 14. क्यों इनपुटस्ट्रीम और आउटपुटस्ट्रीम लागू करने योग्य और सॉकेट लागू नहीं करता है?
- 15. स्केल विकल्प का संयोजन [Iterable [_]]
- 16. जावा लाइब्रेरी संग्रह या Iterable
- 17. ब्राउज़ करने योग्य API
- 18. CloneNotSupportedException क्लोन करने योग्य
- 19. सॉर्ट करने योग्य डब्ल्यू/चयन योग्य पाठ
- 20. Iterable ऑब्जेक्ट और Django StreamingHttpResponse
- 21. जावा Iterable <E> इंटरफेस
- 22. Django Newbie ManyRelated Manager Iterable प्रश्न नहीं
- 23. नेटवर्कस्ट्रीम.ReadAsync (प्रतीक्षा करने योग्य)
- 24. पाइथन नाम का उपयोग करने योग्य नाम जिसे कई बार
- 25. सशर्त "ब्राउज़ करने योग्य" विशेषता
- 26. रद्द करने योग्य कार्यकर्ता थ्रेड
- 27. प्रिंट करने योग्य रिपोर्टों को लागू करने में दर्द को कम करना
- 28. jQuery सॉर्ट करने योग्य, ड्रॉप करने योग्य और खींचने योग्य एक साथ काम करने के लिए
- 29. सॉर्ट करने योग्य और ड्रॉप करने योग्य, ड्रॉप करने योग्य नहीं है, जब डोम करता है?
- 30. jQuery स्क्रॉल करने योग्य, सॉर्ट करने योग्य, फ़िल्टर करने योग्य तालिका
उस कोड का प्रदर्शन बोझ क्या है? अर्थ: क्या यह ओ (एन) समय लेता है? –
@StefanKunze, * क्या * ओ (एन) समय लेता है? बेशक, कहें, इंडेक्स लुकअप रैखिक होगा। लेकिन यह सब के बाद, सूचकांक नहीं है। –
एक पुनरावर्तक के लिए प्रारंभिक रूपांतरण? –