渡されている複雑なオブジェクト型で動作するような型推論が可能かどうかを調べようとしています。コントロール。現在、私は使用しているジェネリック(バータイプ)を具体的に定義しなければなりません。複雑な汎用オブジェクトを渡したときの型推論の例
trait Martini[A]
trait Foo[A <: Martini[A]] {
def foo(): A
}
class Bar extends Martini[Bar] {
def whoAmI = "Bar"
}
object Bar extends Foo[Bar] {
override def foo(): Bar = new Bar()
}
object Test extends App {
// val bar: Bar = test(Bar) // Want to do this, but doesn't work
val bar: Bar = test[Bar, Bar.type](Bar) // Works
println(bar.whoAmI)
def test[A <: Martini[A], F <: Foo[A]](f: F): A = {
f.foo()
}
}
私がコメントした行は、私が達成したいものです。ご協力いただきありがとうございます。
まあ... '分散 'が重要です。 –
@ SarveshKumarSinghいいえ、この質問のためではありません。 –