일반 열거 형 값을 사용하고 기본 정수 값을 두 배로하는 F # 함수를 작성하고 싶습니다. 다행스럽게도 enum을 정수로 변환하는 int
이라는 내장 함수가 있으므로 쉽게 처리 할 수 있어야합니다. 맞습니까? 여기 내 첫 번째 시도이다 :Enum 형식의 F # 형식 제약
let doubler (value : 't when 't : enum<int>) =
2 * (int value)
슬프게도,이 다음과 같은 컴파일러 메시지가 발생합니다
Program.fs이 (2,10) : 경고 FS0064 :이 구조는 코드보다 덜 일반적인되게 형식 주석으로 표시됩니다. 변수 유형 '이 (가)'int '유형으로 제한되었습니다.
Program.fs (2,10) : 오류 FS0071 : 형식 유추 변수에 기본 형식 'int'를 적용 할 때 형식 제약 조건이 일치하지 않습니다. 유형 'int' 은 CLI enum 유형이 아닙니다. Program.fs (1,28) - (1,42)도 참조하십시오. 추가 유형 제한을 추가한다고 생각하십시오.
내가 뭘 잘못하고 있니? F #의 일반 열거 형 값에서 기본 정수를 추출하는 더 좋은 방법이 있습니까?
'enum'은 값을 표현으로 변환합니다. 컴파일러는 당신을 위해 제약 조건을 넣을 것입니다. 아래를 참조하십시오. – s952163