you*_*rja 1 functional-programming scala
我有一个简单的问题,为什么Scala编译器不能自己推断函数参数类型?
一些函数式编程语言(如Haskell)可以推断几乎所有类型,因为它们可以执行全局类型推断.Scala不能这样做,部分原因是Scala必须支持子类型多态(继承),这使得类型推断更加困难.以下是Scala中何时需要显式类型注释的规则的摘要.
何时需要显式类型注释
实际上,您必须为以下情况提供显式类型注释:
一个可变的var或不可变的val声明,其中你没有赋值,(例如,像val book这样的类中的抽象声明:String,var count:Int
所有方法参数(例如,def存款(金额:金钱)= {...}).
在以下情况下返回类型的方法:
1)当你在一个方法中显式调用return时(即使在结尾).
2)当一个方法是递归的.
3)当两个或多个方法重载(具有相同的名称)并且其中一个方法调用另一个时; 调用方法需要返回类型注释.
4)当推断的返回类型比您预期的更通用时,例如,任何.
源程序设计Scala,第2版 - O'Reilly Media
归档时间: |
|
查看次数: |
167 次 |
最近记录: |