我试图表明问题而且我做得最差。让我们给出复杂的代码。
我正在调用类似的函数:
mySchedule(config, actorSystem.scheduler.schedule) {
...
}
该函数定义如下:
def mySchedule(config: MyConfig, cb: (FiniteDuration, FiniteDuration) => (=> Unit) => Cancellable)(f : => Unit) = {
val initialDelay = ...
val interval = ...
cb(initialDelay, interval)(f)
}
为了进行测试,我愿意做类似
的事情def noop: Unit = {}
val promiseSchedule = Promise[(FiniteDuration, FiniteDuration, => Unit)]()
mySchedule(
config,
{... promiseSchedule.success((initialDelay, interval, f))}
)(noop)
promiseSchedule.future.value must be_==(...)
我如何使这项工作?
答案 0 :(得分:3)
试试:
def noop(): Unit = {}
val promiseSchedule = Promise[(Int, () => Unit)]()
// ...
promiseSchedule.success((1, noop))
原因是因为在一个元组中(就像在一个案例类中一样)构造函数的所有成员都是val。 并且不可能在val中存储按名称调用,只能存储其值或函数。
干杯
答案 1 :(得分:0)
虽然这个问题已得到解答,但这篇博客文章可能会激发更多关于创建Scala的想法" Noop":https://jazzy.id.au/2015/04/01/noop-monad.html