Scala:没有参数的单个抽象方法

Scala: single abstract methods without a parameter

使用 SAM 类型,我们可以:

trait Sam {
  def foo(i: Int): String
}

val sam : Sam = _.toString

如果我的抽象方法没有参数怎么办?

您可以像这样使用带有空参数列表的 lambda:

trait Sam {
  def foo(): String
}

val sam : Sam = () => "hello"

您不能使用 _ 表示法,因为无法使用 _.

定义零参数函数

如果将 foo 定义为 def foo: String(即如果它没有参数列表),这将不起作用,因为 SAM 转换仅适用于单一方法只有一个的情况参数列表.