2

我正在关注 scala 教程。

在函数字面量中,它具有以下符号:

(_ : *type*) => println("pressed")

例如,

(_ : Int) => println("pressed")

在这种表示法中,我无法理解(_ : type )的含义。

4

1 回答 1

4

这是一个带有忽略参数的匿名函数。在 Scala 中,约定是在不使用参数时使用下划线。

您可以像这样重写完全相同的内容:

(unused: Int) => println("pressed")

至于为什么有人要这样做;通常你需要安抚 Scala 的类型推断。所以如果你只写

_ => println("pressed")

那么 Scala 将无法推断输入参数的类型。将其键入为

(_: Int) => println("pressed")

确保编译器推断的类型是Int => Unit.

于 2017-12-18T14:42:45.787 回答