作为Scala上的元组参数

时间:2016-03-23 10:56:35

标签: scala

我试图表明问题而且我做得最差。让我们给出复杂的代码。

我正在调用类似的函数:

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_==(...)

我如何使这项工作?

2 个答案:

答案 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