背景: 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
どちらの使用法にも満足していません。
これで十分なコンテキストが提供されることを願っています。私の質問は、私が望むものを達成するためのより良い方法は何ですか?