Триггер значения перегруженного метода с альтернативами для параметра '=> Unit' - PullRequest
0 голосов
/ 11 декабря 2018

Я только что обновил 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

1 Ответ

0 голосов
/ 11 декабря 2018

Примечание 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)
...