0
유형 매개 변수를 포함하는 싱글 톤 유형을 실험하고 있습니다. 그 싱글 톤 유형에 대한 Witness와 중첩 된 유형에 대한 typeclass를 모두 받아들이는 함수를 작성하려고합니다. 그것은 (아래 f1()
및 f2()
참조) 개별적으로 하나를 얻을 쉽게,하지만 난 그것을 동시에 작동시킬 수 없습니다 :동시에 증인과 타입 클래스 받기
inferred type arguments [Nothing,Test.v.type] do not conform to method f3's type parameter bounds [L,M <: Vector[L]]
[error] f3(v ->> "foo")
가 거기에 내가 무엇입니까
import shapeless._
import shapeless.labelled.FieldType
import shapeless.syntax.singleton._
sealed trait TC[L]
object TC {
implicit def intTC = new TC[Int] {}
}
object Test {
def f1[VI <: Vector[Int]](value: FieldType[VI, String])(
implicit wt: Witness.Aux[VI]) = {}
def f2[L](value: FieldType[_ <: Vector[L], String])(
implicit wt: TC[L]) = {}
def f3[L, M <: Vector[L]](value: FieldType[M, String])(
implicit wt: TC[L], witness: Witness.Aux[M]) = {}
val v = Vector(1,2,3)
f1(v ->> "foo") // works
f2(v ->> "foo") // works
f3(v ->> "foo") // does not work
}
컴파일러가 내부 형과 단일 형을 동시에 추론하는 것을 돕는 방법?
첫 번째 매개 변수 목록에 'L'에 대한 참조가 포함되어 있지 않으므로 'Nothing'으로 추측됩니다. 'f3 [Int, v.type]'으로 호출 해 보았습니까? –
컴파일러에서 유형을 자동으로 추론 할 수있는 방법을 찾고 있습니다. – thesamet