मैं head
और tail
के प्रकार पर scala
में एक list
के विभिन्न खण्डों पर pattern match
चाहते हैं:एक स्कैला सूची के पैटर्न और सिर के पूंछ प्रकार कैसे पैटर्न?
class Solution07 extends FlatSpec with ShouldMatchers {
"plain recursive flatten" should "flatten a list" in {
val list1 = List(List(1, 1), 2, List(3, List(5, 8)))
val list1Flattened = List(1, 1, 2, 3, 5, 8)
flattenRecur(list1) should be (list1Flattened)
}
def flattenRecur(ls: List[Any]): List[Int] = ls match {
case (head: Int) :: (tail: List[Any]) => head :: flattenRecur(tail)
case (head: List[Int]) :: (tail: List[Any]) => head.head :: flattenRecur(head.tail :: tail)
case (head: List[Any]) :: (tail: List[Any]) => flattenRecur(head) :: flattenRecur(tail) // non-variable type... on this line.
}
}
मैं:
Error:(18, 17) non-variable type argument Int in type pattern List[Int] (the underlying of List[Int]) is unchecked since it is eliminated by erasure case (head: List[Int]) :: (tail: List[Any]) => head.head :: flattenRecur(head.tail :: tail) ^
मैं क्या याद आ रही है? सूची के लिए head
और tail
के प्रकार पर पैटर्न मिलान करना मेरे लिए कैसे संभव है?
'केस (सिर: सूची [Int]) :: (पूंछ: सूची [कोई भी]) =>' 'केस के साथ (हेडहेड: Int) :: (हेडटेल: सूची [कोई भी]) :: :: (पूंछ: सूची [कोई भी]) => 'यह आपको टाइप एरर – ayvango
से लड़ने की अनुमति देगा, यह मुद्दा लाइन के मामले के लिए है (सिर: सूची [कोई भी]) :: (पूंछ: सूची [कोई भी])' आपने उल्लेख किया है अलग लाइन, क्या वह लाइन भी मदद करने के लिए माना जाता है ??? – Jas
तीसरे विकल्प दूसरे के साथ संघर्ष। तो आप या तो दूसरी पसंद या तीसरी पसंद समायोजित कर सकते हैं। चूंकि तीसरी पसंद अधिक सामान्य है, इसलिए दूसरा और विशिष्ट – ayvango