【发布时间】:2018-02-11 20:19:45
【问题描述】:
我正在尝试为方法设置超时。我在测试中有以下代码。 f 的返回值是我定义的一个特殊类型。它返回Interval(Int, Int)。
val f = evalfunc (a, b)
evalfunc 正在使用外部单纯形求解器。有时它会卡在这里。我想为此设置一个超时。我在this 之后尝试了未来超时。
def runWithTimeout[T](timeout: Long)(f: => T) : Option[T] = {
Await.result(Future(f), timeout seconds).asInstanceOf[Option[T]] }
def runWithTimeout[T](timeout: Long, default: T)(f: => T) : T = {
runWithTimeout(timeout)(f).getOrElse(default)}
val f = runWithTimeout(300){evalfunc(a, b)}
但它说,tools.Interval 不能转换为 scala.Option。如何在此功能中添加计时器?我需要 val f as Interval(Int, Int) 然后我在 f 上做一些计算。
我的问题是我尝试使用链接中给出的解决方案。就我而言,我正在尝试为返回 Interval(Int, Int) 的方法添加超时,它说它需要 scala.Option。
【问题讨论】:
-
我已经看到了这个链接的答案,并在我的问题中提到了这一点。请检查问题中的链接。
-
只需将
Option[T]替换为T,然后移除演员表。 -
btw
.asInstanceOf通常是出现问题的征兆