2012-06-17 4 views
2

을 정의 할 수 없습니다 나는 다음과 같은 간단한 유형이 있습니다운영자

module Structures 
    type Point2D<'T> (x : 'T, y : 'T) = 
     member this.X = x 
     member this.Y = y 
     member this.IsEqualTo (p : Point2D<'T>) = 
      (this.X = p.X) && (this.Y = p.Y) 

그러나 비주얼 스튜디오 (2012 평가판 버전) 이름 아래에 빨간색 물결 라인 배치 "IsEqualTo을"및 this.X "아래 파란색 구불 구불 한 선 . "

일반 부재 IsEqualTo이 프로그램 포인트에 앞서 불균일 인스턴스화에 사용되어왔다 : 다음

적색 물결 선에 대한 오류 메시지이다. 이 멤버가 먼저 발생하도록 멤버를 재정렬하는 것을 고려하십시오. 또는 인수 유형, 반환 유형 및 추가 일반 매개 변수 및 제약 조건을 포함하여 멤버의 전체 유형을 명시 적으로 지정하십시오.

파란색 선에 대한 메시지는 다음과 같습니다

유형의 매개 변수는 제약 조건이 없습니다 '때'T : 평등 '나는 모든 전에 "IsEqualTo"를 배치하려고했습니다

다른 구성원은 오류가 지속됩니다.

=에 로그인 this.X = p.X이 일반 유형 'T보다 작동하고 있지만 오류를 수정하는 것처럼 보일 수 있습니다.

도움을 주셔서 감사합니다.

답변

8
type Point2D<'T when 'T : equality> (x : 'T, y : 'T) = 
    member this.X = x 
    member this.Y = y 
    member this.IsEqualTo (p : Point2D<'T>) = 
     (this.X = p.X) && (this.Y = p.Y) 
+0

와우는 오류가 그리 간단하지 않다는 것을 알지 못했습니다. 나는 여기에 질문을 게시하기 전에 검색과 독서에 한 시간 가까이 머물렀다. 감사. – Shredderroy