0

背景: scala.js / scalatagsをscala.rxと一緒に使用することに取り組んでいます。私が達成しようとしているVarのは、演算子スタイルを使用して、html 入力から Rx に値をバインドすることです。これが私がやっていることです:

implicit class BoundHtmlInput(input: Input) {
  def bindTextTo(v: Var[String]): Input = {
    input.oninput = { (e: dom.Event) => v() = input.value}
    input
  }

  def bindNumberTo(v: Var[Int]): Input = {
    input.oninput = {(e: dom.Event) => v() = input.valueAsNumber}
    input
  }

  def ~>[T](v: Var[T])(implicit ev: T =:= Int): Input =
     bindNumberTo(v.asInstanceOf[Var[Int]])

  def ~>[T](v: Var[T])(implicit ev: T =:= String): Input = 
     bindTextTo(v.asInstanceOf[Var[String]])
}

メソッド呼び出しでは問題なく動作しますが、オペレーター呼び出しでは失敗し~>ます。エラーは次のとおりです。

Error:(43, 70) ambiguous reference to overloaded definition,
both method ~> in class BoundHtmlInput of type [T](v: rx.Var[T])(implicit ev: =:=[T,String])org.scalajs.dom.html.Input
and  method ~> in class BoundHtmlInput of type [T](v: rx.Var[T])(implicit ev: =:=[T,Int])org.scalajs.dom.html.Input
match argument types (rx.core.Var[String])

そして、私はasInstanceOfどちらの使用法にも満足していません。

これで十分なコンテキストが提供されることを願っています。私の質問は、私が望むものを達成するためのより良い方法は何ですか?

4

1 に答える 1