당신은 AnyVals로 유형을 제한 할 스칼라 형식 시스템을 사용할 수 있습니다 : 예
scala> val p:Product4[AnyVal,AnyVal,AnyVal,AnyVal] =(1,2,3,4)
p: Product4[AnyVal,AnyVal,AnyVal,AnyVal] = (1,2,3,4)
scala> val p:Product4[AnyVal,AnyVal,AnyVal,AnyVal] =(1,2,3,new Object)
<console>:13: error: type mismatch;
found : Object
required: AnyVal
:
이 당신을 위해 무엇을 요구하면 줄 것으로 보인다
scala> class RestrictedClass (l:List[Product2[AnyVal,AnyVal]])
defined class RestrictedClass
scala> val i = List((1,2),(3,4),(new Object,5))
i: List[(Any, Int)] = List((1,2), (3,4), ([email protected],5))
scala> new RestrictedClass(i)
<console>:16: error: type mismatch;
found : List[(Any, Int)]
required: List[Product2[AnyVal,AnyVal]]
new RestrictedClass(i)
^
scala> val i2 = List((1,2),(3,4),(5,6))
i2: List[(Int, Int)] = List((1,2), (3,4), (5,6))
scala> new RestrictedClass(i2)
res5: RestrictedClass = [email protected]
: "을 어떤 방법이 있나요 제품에 대한 유형 제한도 있습니까? "
법안에 적합한 https://github.com/milessabin/shapeless가 있습니다. 암시 적 인수로 제한 조건을 인 코드 할 수도 있습니다. 당신이 이상적으로 달성하려고 시도하는 것의 일부 코드 스 니펫이 도움이 될 수 있습니다. – huynhjl
@huynhjl 암묵적인 인수로 어떻게 이것을 수행 할 수 있습니까? – mushroom
정확히 무엇을 하려는지 확실하지 않습니다. 간단한 설명에서 알 수 있듯이 다음과 같이 작동합니다 :'type P3 = Product3 [AnyVal, AnyVal, AnyVal]; 클래스 C (list : List [P3]); 새로운 C (List ((1,2,3), ("a", "b", "c")) : List [P3])'. – huynhjl