मैं एक सूची लिखना चाहता हूं जो एक सूची को फ़्लैट करता है।स्कैला फ़्लैटन सूची
object Flat {
def flatten[T](list: List[T]): List[T] = list match {
case Nil => Nil
case head :: Nil => List(head)
case head :: tail => (head match {
case l: List[T] => flatten(l)
case i => List(i)
}) ::: flatten(tail)
}
}
object Main {
def main(args: Array[String]) = {
println(Flat.flatten(List(List(1, 1), 2, List(3, List(5, 8)))))
}
}
मैं नहीं जानता कि क्यों यह काम नहीं करते, यह List(1, 1, 2, List(3, List(5, 8)))
रिटर्न लेकिन यह List(1, 1, 2, 3, 5, 8)
होना चाहिए।
क्या आप मुझे एक संकेत दे सकते हैं?
यह एक व्यायाम के रूप में एक मजेदार है। असली कोड के लिए, निश्चित रूप से, 'list' पर _is_ एक 'flatten' विधि है। – AshleyF
यह इस मामले में काम नहीं करेगा। यहां सूची 'सूची [कोई भी]' है, इसलिए आपको फ़्लैटन कॉल करने के लिए किसी भी => ट्रैवर्सबलऑन [_] से एक अंतर्निहित रूपांतरण परिभाषित करना होगा। यह संभव होना चाहिए लेकिन मुझे संदेह है कि यह इस कार्य से आसान है। – rjsvaljean
कंपाइलर त्रुटियों और चेतावनियों पर एक नज़र डालें: वे कुछ बड़े संकेत देंगे –