2つの型パラメータを持つ関数を指定すると、1つの型に対して型パラメータを渡すことが可能ですか?たとえば、型としてA
型を渡します。B
関数からコンパイラによって推論できます。 f
。スカラーのパラメータ型推論
def foo[A, B](f: A => B): B = {
f(null.asInstanceOf[A])
}
今は2つの解決策しか見つかりませんでした。
溶液1(標準的な使用は):foo
を呼び出し、両方のタイプを指定foo[String, Int](e => 1)
しかしInt
の定義は
溶液2冗長である:
def foo[A, B](useType: A => Unit)(f: A => B): B = {
f(null.asInstanceOf[A])
}
に関数の定義を変更し、それを使用
def use[T](t: T) = {}
val res: Int = foo(use[String]) { a => 1 }
これは機能しますが、それは機能しません型をコンパイラに渡します。
A
と入力すると、2つのタイプのパラメータを持つ関数にはちょうどタイプ指定できますか?
あなたの答えのおかげで、私はこの方向に深く見て、私は関数の代わりにクラスを使用することができるかどうかを確認します。 –