【发布时间】:2011-09-05 11:04:15
【问题描述】:
在 Scala 中是否有一些标准方法可以指定一个什么都不做的函数,例如在实现一个 trait 时?这有效:
trait Doer {
def doit
}
val nothingDoer = new Doer {
def doit = { }
}
但也许有一些更合适的方式来表达nothingDoer?
编辑 出现了一些有趣的答案,作为回应,我在问题中添加了一些内容。首先,事实证明我可以在 Doer 中使用默认实现。很好的提示,但你并不总是想要那个。其次,显然一种更惯用的写作方式是:
val nothingDoer = new Doer {
def doit { }
}
第三,虽然没有人确切建议,但我发现这似乎也有效:
val nothingDoer = new Doer {
def doit = Unit
}
这是一个不错的选择吗?
(我认为一些人建议的“:Unit”并没有真正添加任何东西。)
【问题讨论】:
-
这更像是定义一个特征,而不是实现它
-
响应您的编辑,我认为
def doit = Unit没有任何意义。Unit是Unit类型的单例对象。你不妨说def doit = 42或def doit = ListBuffer,因为它们也可以。
标签: scala