以下是我的代码,我在问题标题中得到了例外
ActorRef和这里的ask函数都是Akka,但我不知道上面的异常意味着什么。即使是在Google上进行搜索也无法在NotInferedB上产生太大的影响....有人可以解释一下吗?
def exchangeRateLookup(exchangeRateActor: ActorRef): (Option) => Future[Any] = {
(iv: Option) => iv map (iv => ask(exchangeRateActor, iv.asInstanceOf[IV].getCurrency.getIsoCurrCode)).getOrElse(Future.successful())
}
修改
我现在已经更正了我的代码以添加适用的输入,但现在我得到了“缺少参数类型”错误。这是我最新的代码:
(iv: Option[IV]) => iv map (i => ask(exchangeRateActor, i.getCurrency.getIsoCurrCode)).getOrElse(Future.successful[Null](null))
还有其他想法吗?
答案 0 :(得分:1)
Future.successful [T](结果:T):Future [T]返回已经完成的Future。如果在没有参数的情况下调用它,则编译失败。我建议你先解决这个问题。此外,iv被声明为Option,没有任何类型参数(Option [T])。然后,将其转换为IV,以便从中提取货币。除非IV是在你的类中的其他地方声明的类型,并且保证有一个" getCurrency()"方法,我不知道这是如何工作的。让我们先解决这些问题,看看会发生什么。
答案 1 :(得分:1)
要更正另一个答案,2.11显示单位值插入到这里的parens中:
scala> :se +deprecation
scala> Future.successful()
<console>:51: warning: Adaptation of argument list by inserting () has been deprecated: this is unlikely to be what you want.
signature: Future.successful[T](result: T): scala.concurrent.Future[T]
given arguments: <none>
after adaptation: Future.successful((): Unit)
Future.successful()
^
res1: scala.concurrent.Future[Unit] = scala.concurrent.impl.Promise$KeptPromise@60dac573
(在2.10上,尝试-Xlint或-Ywarn-adapted-args等。)
如果else部分的类型错误, Option.getOrElse
可以返回更宽的类型。
请参阅puzzler。
但ask
是Future[Any]
。