在Scala中是否有一些标准方法来指定一个什么都不做的函数,例如在实现特征时?这有效:
trait Doer {
def doit
}
val nothingDoer = new Doer {
def doit = { }
}
但也许还有一些更合适的方式来制定什么呢?
编辑出现了一些有趣的答案,我在回答中添加了一些问题。首先,事实证明我可以在Doer中使用默认实现。好的提示,但你并不总是那么想。其次,显然更惯用的写作方式是:
val nothingDoer = new Doer {
def doit { }
}
第三,虽然没有人提出这一点,但我发现这似乎也有效:
val nothingDoer = new Doer {
def doit = Unit
}
这是一个不错的选择吗?
(我认为,有些人建议的“单位”并没有真正添加任何东西。)
答案 0 :(得分:11)
由于您的返回类型为单位,因此通常不使用=
val nothingDoer = new Doer {
def doit {}
}
答案 1 :(得分:2)
我不知道这样做的更惯用的方法(我认为没有相当于Python的'pass',即。)。
但您可以使用“单位”来指定方法在特征中不返回任何内容:
def doit: Unit
答案 2 :(得分:2)
如果您经常“无所事事”对象,您也可以“无所事事”作为默认实现:
trait Doer {
def doit {}
}
val nothingDoer = new Doer
答案 3 :(得分:0)
基本上你想要这样的东西:
trait Doer {
def doit : Unit
}
您也可以考虑查看类型选项。