2012-10-31 39 views
5

के लिए स्कैला प्रकार मिस्चैच त्रुटि में मैं स्कैला में एक रिवर्स विधि लिखने की कोशिश कर रहा हूं जो एक सूची लेता है और रिवर्स देता है। मेरे पास है:लूप

object Reverse { 
    def reverseList(list: List[Int]): List[Int] = { 
    var reversed: List[Int] = List() 
    for (i <- list) { 
     reversed = i :: reversed 
    } 
    } 
    def main(args: Array[String]) { 
    println(reverseList(List(1,2,3,4))) 
    } 
} 

लेकिन जब मैं संकलित करने के लिए प्रयास करते हैं, मैं हो रही है:

example.scala:4: error: type mismatch; 
found : Unit 
required: List[Int] 
    for (val i <- list) { 
      ^

सूची "सूची" प्रकार सूची [इंट] का घोषित किया गया था। इसे टाइप यूनिट के रूप में क्यों पहचाना जा रहा है?

+2

इसकी शिकायत नहीं कर उस सूची एक गलत प्रकार लेकिन रिटर्न इकाई के लिए अभिव्यक्ति की है वापसी प्रकार ओएस सूची [इंट] – Arjan

+0

की उम्मीद है जब यह एक होमवर्क/व्यायाम के लिए है? ओथराइज आप 'Seq' – drexin

उत्तर

4

लूप के बाद reversed जोड़ें। स्कैला में एक फ़ंक्शन में अंतिम पंक्ति वापसी मान है। for (i <- list){...}Unit देता है।

object Reverse { 
    def reverseList(list: List[Int]): List[Int] = { 
    var reversed: List[Int] = List() 
    for (i <- list) { 
     reversed = i :: reversed 
    } 
    reversed 
    } 
    def main(args: Array[String]) { 
    println(reverseList(List(1,2,3,4))) 
    } 
} 
+0

धन्यवाद' की 'रिवर्स' विधि का उपयोग कर सकते हैं, जिसने इसे पूरी तरह से ठीक किया है। मुझे अभी भी समझ में नहीं आता है कि मुझे एक प्रकार की मेल नहीं मिला है। क्या वैरिएबल सूची अभी भी पहचान नहीं की जानी चाहिए? – user1789874

+0

मेरी टिप्पणी देखें – Arjan

+0

टाइप मिस्चैच इसलिए है क्योंकि 'रिवर्सलिस्ट' फ़ंक्शन 'सूची [Int]' के रिटर्न प्रकार की अपेक्षा कर रहा है लेकिन 'यूनिट' वास्तव में 'अभिव्यक्ति' द्वारा वापस लौटाया जा रहा है। परिवर्तनों में अंतिम पंक्ति के रूप में 'उलट 'को' यूनिट 'से' सूची [int] 'में लौटा प्रकार और प्रकार मिलान मिलान त्रुटि को जोड़ दिया गया है। – Brian