在 Scala 中是否可以指定匿名函数的返回类型?

发布于 2024-08-18 06:12:07 字数 153 浏览 5 评论 0原文

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

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

只是为了静态类型,是否也可以指定其返回类型?我认为这会让事情变得更加清晰。

I know you can create an anonymous function, and have the compiler infer its return type:

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

Just for static typing's sake, is it possible to specify its return type as well? I think it would make things a lot clearer.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

哥,最终变帅啦 2024-08-25 06:12:07
val x = () => { System.currentTimeMillis } : Long
val x = () => { System.currentTimeMillis } : Long
勿挽旧人 2024-08-25 06:12:07

在我看来,如果您想让事情变得更清楚,最好通过在其中添加类型注释而不是函数的结果来记录对标识符 x 的期望。

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

然后编译器将确保右侧的函数满足该期望。

In my opinion if you're trying to make things more clear it is better to document the expectation on the identifier x by adding a type annotation there rather than the result of the function.

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

Then the compiler will ensure that the function on the right hand side meets that expectation.

岛徒 2024-08-25 06:12:07

Fabian 给出了简单的方法,但如果您喜欢对糖进行微观管理,还可以使用其他一些方法,包括:

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
}

因为在大多数情况下,如果它从 Function 派生出来,没有什么区别,只有它是否有应用。

Fabian gave the straightforward way, but some other ways if you like micromanaging sugar include:

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

or

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

or even

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

since in most situations it makes no difference if it descends from Function, only whether it has an apply.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文