在REPL中,我定義了一個函數。請注意返回類型。Scala字符串與java.lang.String - 類型推斷
scala> def next(i: List[String]) = i.map {"0" + _} ::: i.reverse.map {"1" + _}
next: (i: List[String])List[java.lang.String]
如果我指定的返回類型爲字符串
scala> def next(i: List[String]): List[String] = i.map {"0" + _} ::: i.reverse.map {"1" + _}
next: (i: List[String])List[String]
爲什麼不同?我也可以指定返回類型爲List [Any],所以我猜String只是java.lang.String的一個包裝類型。這會有什麼實際影響,或者我可以安全地不指定返回類型?
字符串文字被推斷爲類型爲java.lang.String的時候,看起來他們同樣可以被推斷爲String類型,這有點奇怪。但很高興知道他們是完全一樣的東西。 –
@Luigi這是因爲文字_are_類型java.lang.String。這裏真的沒有推論 - 它們是文字。 –
也許是我見過的最清晰,最好,理想的答案。令人耳目一新。謝謝丹尼爾 – jbnunn