N <: Nat
유형 매개 변수가 주어진 정확히 3 N
의 목록을 작성하는 함수를 정의하려고했습니다.건물 고정 크기 목록 Nat N
import shapeless._
import shapeless.nat._
scala> def natNOfSize3[N <: Nat](n: Nat): Sized[List[N], _3] =
Sized[List, _3](List(n, n, n))
<console>:17: error: wrong number of type parameters for overloaded method value apply with alternatives:
[CC[_]]()(implicit cbf: scala.collection.generic.CanBuildFrom[Nothing,Nothing,CC[Nothing]], implicit ev: shapeless.AdditiveCollection[CC[Nothing]])shapeless.Sized[CC[Nothing],shapeless._0] <and>
[CC[_]]=> shapeless.SizedBuilder[CC]
def natNOfSize3[N <: Nat](n: Nat): Sized[List[N], _3] = Sized[List, _3](List(n, n, n)) ^
하지만 왜 실패했는지 이해할 수 없습니다.
Travis와 마찬가지로 Sized (...)에 대한 인수가 잘못되었으므로 요소 대신 모음을 전달합니다. 참고 : Sized.apply는 SizedBuilder를 반환합니다. https://github.com/milessabin/shapeless/blob/master/core/src/main/scala/shapeless/sized.scala SizedBuilder.apply는 다음 요소를 가져옵니다. // github .com/milessabin/shapeless/blob/b73453bab27e73b6aa1206805e73ec583852309d/project/Boilerplate.scala 컴파일러 매직은 단일 함수 호출처럼 보입니다. –
흥미 롭 - https://github.com/milessabin/shapeless/blob/b73453bab27e73b6aa1206805e73ec583852309d/project/Boilerplate.scala#L428, Marcus. 이'Boilerplate' 클래스에 대한 의견을 권해 주실 수있는 블로그 게시물은 무엇입니까? –
그러나 내가 알고있는 블로그 글은 https://github.com/milessabin/shapeless/blob/b73453bab27e73b6aa1206805e73ec583852309d/project/Boilerplate.scala#L115에서 충분히 설명 할 수 없습니다. –