왜 다음 작업을 수행 할 수 있습니다 (이 컴파일 이유는?) :앨리어싱 올바른 유형
class A
type M[_] = A
나는 기대 내가 할 수있는 유일한 별칭 예 A List[_]
를 들어, 하나 개의 형식 매개 변수를 예상 유형,하지만 일반 클래스와도 작동합니다.
def foo(m: M[_]) = m
잘못된 매개 변수를 사용하여 호출 :
scala> foo("a")
<console>:15: error: type mismatch;
found : String("a")
required: M[_]
(which expands to) A[]
foo("a")
내가 같은 오류가 나는 방법을 만드는 경우
. A[]
의 의미는 무엇입니까? 더 나아가
, 어떻게 설명합니다 :
scala> type M[_, _] = A
<console>:12: error: _ is already defined as type _
type M[_, _] = A
나는 매개 변수화 타입이 될 것입니다 내 별명의 오른쪽에 넣어 그 무엇을 보장 할 수있는 방법이 있나요?
두 번째 질문 :'클래스 A [T <: AnyRef, U <: AnyVal]'및'유형 M = A [_, _]'무엇입니까? – Samar
@Samar 이것은 매우 다른 상황입니다. –