2014-05-17 6 views
2

나는 두개의 클래스를 서브 클래 싱하려는 일부 슬라이싱 논리를 가진 "RecordA"라는 추상 클래스가 있습니다. 나는 "Record"가 자신의 타입을 리턴하기 위해 구현되어야하는 추상 슬라이스 메소드를 정의하고자한다. 지. 슬라이스 된 경우 "RecordB"를 입력하면 RecordB 유형이 반환됩니다.셀프 반환 형식을 지정하는 방법

Fsharp에서 가능합니까? 그렇지 않다면 왜 안 되겠습니까?

+0

는 또한 http://stackoverflow.com/questions/3045671/ 참조 자신의 타입을 반환하는 interface-for-method-that-type (모든 대답이 여기에 적용됨) – Jwosty

답변

4

콘크리트 클래스에 따라 다른 유형은 파라 메트릭하게하는 것입니다 반환하는 방법이 할 수있는 인터페이스를위한 유일한 방법 :

type Record<'Concrete> = 
    abstract member Slice : unit -> 'Concrete 

type RecordB() = 
    interface Record<RecordB> with 
     member this.Slice() = new RecordB() 
관련 문제