2015-06-29 166 views
-1

我在Scala中有以下程序:函數返回值斯卡拉

object Ch4 { 

     def main(args: Array[String]) { 
     println("Hello, world!") 
     val x = sortMap() 
     println(x) 
    }            //> main: (args: Array[String])Unit 

    def sortMap () { 
     val scores = scala.collection.immutable.SortedMap ("Alice" -> 10, "Fred" -> 7, "Bob" -> 3) 
     return scores 
    }            //> sortMap:()Unit 
} 

我很困惑,爲什麼sortMap函數返回類型Unit inspite的Map。另外爲什麼在main函數中什麼也沒有得到print

+3

您需要使用'高清sortMap()= {...}' – Lee

+0

改變它,我以後我得到這個錯誤 「方法sortMap有返回語句;需要結果類型」 – neel

+0

錯誤已被刪除,但仍然沒有得到打印在斯卡拉工作表的主要功能 – neel

回答

1

表格def name() { ... }的方法定義隱式返回Unit。您需要添加的返回類型並添加=

def sortMap(): SortedMap[String, Int] = { 
    val scores = scala.collection.immutable.SortedMap ("Alice" -> 10, "Fred" -> 7, "Bob" -> 3) 
    return scores 
} 

或者乾脆:

def sortMap() = SortedMap("Alice" -> 10, "Fred" -> 7, "Bob" -> 3) 
+0

我在文檔中讀到的是我們不必告訴Scala函數的返回類型。僅用於遞歸函數返回類型是強制性的。那麼爲什麼這裏需要? – neel

+0

@neel - 這是因爲你使用了顯式的'return',請參見[這個問題](http://stackoverflow.com/questions/2209179/type-in​​ference-on-method-return-type)。在scala中很少需要顯式返回。 – Lee