我刚刚将Scala.rx的0.3.2版本升级到0.4.0,突然在我的trigger
上收到以下错误:
overloaded method value trigger with alternatives:
[error] (f: Boolean => Unit)(implicit ownerCtx: rx.Ctx.Owner)rx.Obs <and>
[error] (thunk: => Unit)(implicit ownerCtx: rx.Ctx.Owner)rx.Obs
[error] cannot be applied to (() => org.scalajs.jquery.JQuery)
[error] MyRx.trigger { () =>
对于我所有的方法调用,如下所示:
import rx.Ctx.Owner.Unsafe._
val MyRx: Var[Boolean] = Var[Boolean](false)
MyRx.trigger {
// ...
jQuery("#page_content").css("opacity", 1)
}
以某种方式我无法解决此问题。我该如何解决?
这似乎可行:
MyRx.trigger {
// ...
jQuery("#page_content").css("opacity", 1)
()
}
但是我肯定会喜欢这样的解决方案:
MyRx.trigger {
// ...
jQuery("#page_content").css("opacity", 1)
}: => Unit // doesnt compile
答案 0 :(得分:0)
在错误消息中注意MyRx.trigger { () =>
。首先,您需要删除() =>
部分(它也可能在{
之后的下一行)。
=> Unit
作为参数类型是一个别名参数,它会自动将{ ...; jQuery("#page_content").css("opacity", 1) }
之类的块变成{ () => ...; jQuery("#page_content").css("opacity", 1) }
。
在这种情况下,似乎没有发生丢弃,您可以显式丢弃结果,例如
val _ = jQuery("#page_content").css("opacity", 1)
或
jQuery("#page_content").css("opacity", 1): Unit
如果要把它放在整个块上,语法会更难看:
MyRx.trigger({
// ...
jQuery("#page_content").css("opacity", 1)
}: Unit)