scala - 有没有办法指定 Scala 函数文字的返回类型?

标签 scala

我想知道是否可以指定函数文字的返回类型。例如我有

(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

但是可以直接在函数文字上指定吗?

最佳答案

“指定类型”被称为 type ascription .所以如果函数文字应该是 Int => Double 类型(取一个 Int 参数并返回一个 Double)然后您可以像这样指定它:

 (x: Int) => { x * 2.0 }:Double

如前所述,Scala 会进行类型推断,因此实际上并不需要类型归属,但是如果您想“提示”类型检查器有关预期类型的​​信息,您可以这样做。但正如文档中提到的,类型归属并不常用。

关于scala - 有没有办法指定 Scala 函数文字的返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46117399/

相关文章:

scala:在父类和子类中覆盖构造函数中的隐式var?

scala - 有什么理由避免 return 语句

sql - Scala Doobie PSQLException : ERROR: syntax error at end of input when use "Like %"

java - 如何使用 sbt-assembly 插件设置 build.sbt?

scala - 如何知道 Scala 隐式定义的来源?

scala - 将 Map 作为 (flatMap) 映射函数传递会导致错误

xml - 这是 scala.xml.Elem 中的错误吗?

scala - Scala 插件缺少 NetBeans 8.2 外部执行基础 API

scala - 在 Scala 中使用类型成员来减少类型冗长是否可行?

scala - 使用环境变量将 sbt scala 项目发布到 Artifactory