在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