Bal*_*raj 6

一些函数式编程语言(如Haskell)可以推断几乎所有类型,因为它们可以执行全局类型推断.Scala不能这样做,部分原因是Scala必须支持子类型多态(继承),这使得类型推断更加困难.以下是Scala中何时需要显式类型注释的规则的摘要.

何时需要显式类型注释

实际上,您必须为以下情况提供显式类型注释:

  • 一个可变的var或不可变的val声明,其中你没有赋值,(例如,像val book这样的类中的抽象声明:String,var count:Int

  • 所有方法参数(例如,def存款(金额:金钱)= {...}).

  • 在以下情况下返回类型的方法:

    1)当你在一个方法中显式调用return时(即使在结尾).

    2)当一个方法是递归的.

    3)当两个或多个方法重载(具有相同的名称)并且其中一个方法调用另一个时; 调用方法需要返回类型注释.

    4)当推断的返回类型比您预期的更通用时,例如,任何.

源程序设计Scala,第2版 - O'Reilly Media