我知道你可以创建一个匿名函数,并让编译器推断它的返回类型:

val x = () => { System.currentTimeMillis }

只是为了静态类型的缘故,是不是可以指定它的返回类型呢?我相信这会令事情变得更清晰。

有帮助吗?

解决方案

在我看来,如果你想使事情变得更加清晰最好是通过添加类型注释存在,而不是函数的结果是记录这个标识符x的期望。

val x: () => Long = () => System.currentTimeMillis

然后,编译器将确保在右手侧上的功能满足这种期望。

其他提示

val x = () => { System.currentTimeMillis } : Long

费边给了直截了当的方式,但如果你的一些其他的方法一样事无巨细糖包括:

val x = new (() => Long) {
  def apply() = System.currentTimeMillis
}

val x = new Function0[Long] {
  def apply() = System.currentTimeMillis
}

或甚至

val x = new {
  def apply(): Long = System.currentTimeMillis
}

,因为在大多数情况下,它都没有区别,如果它从功能下降时,只有它是否有一个适用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top