我想知道是否可以指定函数文字的返回类型。例如,我有
(x:Int) => x * 2 // scala infers the type Int => Int
((x:Int) => Double) => x * 2 // does NOT compile
我知道Scala会进行类型推断以找到返回类型,但我想明确指定类型,以便编译器更早地捕获错误。
当然我可以通过
强制检查val a: Int => Int = (x: Int) => x * 2
但是可以直接在函数文字中指定吗?
答案 0 :(得分:1)
"指定类型"被称为type ascription。因此,如果函数文字应该是Int => Double
类型(取一个Int参数并返回一个Double),那么你可以像这样指定它:
(x: Int) => { x * 2.0 }:Double
如前所述,Scala会进行类型推断,因此不需要类型归属,但如果您想要提示"提示"关于你可以做的预期类型的类型检查器。但正如文档类型中提到的那样,归档并不常用。