[SCALA] 추상 형식의 멤버 콘크리트 클래스
SCALA추상 형식의 멤버 콘크리트 클래스
다음과 같은 특성과 수준을 감안할 때. 왜이 컴파일을합니까? 이 실제로 뭔가를 사용할 수 있습니까?
trait Container {
type A
}
trait AnotherContainer[B]{
def x(b : B) : B
}
trait Mixed extends Container with AnotherContainer[Container#A]
class Impl extends Mixed{
def x(a : Container#A) = a
}
new Impl().x _
scala> new Impl().x _
res0: (Container#A) => Container#A = <function>
최신 정보:
class Baz { type T; }
실제로 기능입니다하지만 난 그것에 대한 의욕 찾을 수 없습니다 : # 1753를.
해결법
-
==============================
1.그것은 나에게 쓸모있는 경우 해가 보인다. 존재하지 않는 당신이 방법에 통과 할 수 있도록 x는, 원한다 유형입니다. 무해 무익은 컴파일 타임 오류가 취향의 문제입니다되어야하는지, 나는 가정한다.
그것은 나에게 쓸모있는 경우 해가 보인다. 존재하지 않는 당신이 방법에 통과 할 수 있도록 x는, 원한다 유형입니다. 무해 무익은 컴파일 타임 오류가 취향의 문제입니다되어야하는지, 나는 가정한다.
당신이 실제로 않는 x를 어떻게 보면, 그것은 thusly 히 컴파일 해제 :
public java.lang.Object x(java.lang.Object); Code: 0: aload_1 1: areturn
신원 방법은 무엇을해야하는지 정확히 인 (반환, 유형에 관계없이 인수를로드). 당신은 훨씬 적은 코드로 뭔가 상당을 쓸 수 있습니다 :
trait AbstractType { type T } class Useless extends AbstractType { def identity(t: AbstractType#T) = t }
아무것도를 제외하고 그래서 다시 우리가 쓸모가, AbstractType # T를 입력있다.
하지 않는 한 내가 모르는 뭔가가있어.
-
==============================
2.아무것도 <: 당신의 예에서, 컴파일러는>의 기본 유형의 범위를 추가 어느. 보여주는 아래의 두 번째 예는 추상 타입이 가능한 (아니라면 유용함)이되는 경우.
아무것도 <: 당신의 예에서, 컴파일러는>의 기본 유형의 범위를 추가 어느. 보여주는 아래의 두 번째 예는 추상 타입이 가능한 (아니라면 유용함)이되는 경우.
scala> trait T { type A >: Nothing <: Any } defined trait T scala> 1: T#A <console>:6: error: type mismatch; found : Int(1) required: T#A 1: T#A ^ scala> trait T { type A >: Int <: Int } defined trait T scala> 1: T#A res6: T#A = 1 scala> "": T#A <console>:6: error: type mismatch; found : java.lang.String("") required: T#A "": T#A ^
from https://stackoverflow.com/questions/2115678/concrete-classes-with-abstract-type-members by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 아파치 스파크와 JSON 읽기 -`corrupt_record` (0) | 2019.12.31 |
---|---|
[SCALA] 스칼라의 인수로 유닛 인수없이 기능, (0) | 2019.12.09 |
[SCALA] 누군가가 나에게 스칼라에서 암시 적 변환을 설명 할 수 있습니까? (0) | 2019.12.06 |
[SCALA] SparkSQL - 읽기 마루 파일을 직접 (0) | 2019.11.30 |
[SCALA] 스칼라 등 구현 ifTrue, ifFalse, ifSome, ifNone은 피하는 경우 (...) 단순 패턴 매칭 (0) | 2019.11.29 |