无效功能的Scala语法?

njl*_*son 8 scala

在Scala中是否有一些标准方法来指定一个什么都不做的函数,例如在实现特征时?这有效:

trait Doer {
  def doit
}

val nothingDoer = new Doer {
  def doit = { }
}
Run Code Online (Sandbox Code Playgroud)

但也许还有一些更合适的方式来制定什么呢?

编辑出现了一些有趣的答案,我在回答中添加了一些问题.首先,事实证明我可以在Doer中使用默认实现.好的提示,但你并不总是那么想.其次,显然更惯用的写作方式是:

val nothingDoer = new Doer {
  def doit { }
}
Run Code Online (Sandbox Code Playgroud)

第三,尽管没有人提出这一点,但我发现这似乎也有效:

val nothingDoer = new Doer {
  def doit = Unit
}
Run Code Online (Sandbox Code Playgroud)

这是一个很好的选择吗?

(我认为,少数人建议的":单位"并没有真正添加任何内容.)

Lui*_*hys 11

由于您的返回类型是单位,因此通常不使用 =

val nothingDoer = new Doer {
  def doit {}
}
Run Code Online (Sandbox Code Playgroud)

  • @njlarsson雅莉莉.有关方法声明,请参见http://www.codecommit.com/scala-style-guide.pdf部分 (3认同)