2017-10-15 58 views

回答

2

由于1Int类型,因此编译器知道a也是Int类型。 这被称为类型推断。

应该明确指定类型时,这是更好的代码可读性。

必须指定编译器无法推断类型或何时有助于推断其他类型的类型。

在Scala类型推理可以从两个方向进行,从右到左,反之亦然。例如,在val a = 1中,从1的类型推断出a的类型,因此类型推断从右向左进行。在

def myMethod[T](): T = ??? 
val n: Int = myMethod() 

因为n有望成为一个Int,编译器将指示TmyMethod()应该Int太多,所以类型推断从左至右去了。

https://twitter.github.io/scala_school/type-basics.html#inference

http://www.scala-lang.org/old/node/127

http://allaboutscala.com/tutorials/chapter-2-learning-basics-scala-programming/scala-tutorial-overview-scala-type-inference/

How does scala infers the type of a variable?

0

在大多数情况下,Scala编译器可以自动推导出类型。在这些情况下,您不必显式定义变量声明的类型。

var a = 1 

是完全有效的Scala代码。

通常建议显式声明公共方法的返回类型。

相关问题