하나의 함수가 다른 레코드 유형에서 동일한 레이블을 호출하도록 할 수 있습니까? 예하나 이상의 레코드 유형에서 동일한 라벨에 액세스하는 방법은 무엇입니까?
type Pen = {
Diameter: float
InkColor: string
}
type Pencil = {
Diameter: float
Hardness: int
Blackness: int
}
아래에 정의 된 두 개의 기록이있다 말할 수를 위해 나는 함수 중 하나를 기록 유형에서 직경 라벨에 액세스 할 수 있나요? 지금 펜과 연필을 정의하면 컴파일러는 사용할 레코드 유형을 혼동합니다. 문제는 컴파일러에서 형식을 선택하는 것이 아니라 원하는 형식을 선택하면 두 형식을 모두 사용할 수있게하려는 것입니다. 이 예제는 연필을 기대하기 때문에 컴파일되지 않을 것입니다. 지금 볼
let black_pen = {
Diameter = 0.7
InkColor = "Black"
}
let mechanical_pencil = {
Diameter = 0.5
Hardness = 1
Blackness = 2
}
let getDiameter writing_utility =
let {Diameter = dia} = writing_utility
dia
printf "%A" (getDiameter black_pen)
내 유일한 옵션은 다음과 같습니다
- 어떤 객체 인 말 열거 형식으로 레코드를 결합합니다. :이 같은 뭔가 제네릭을 사용할 수있는 경우 패턴 일치
- 사용 클래스 대신 그것은 좋은 것
을 라벨을 확인하고 입력
let getDiameter writing_utility =
let {Diameter<float> = dia} = writing_utility
dia
레코드에 "Diameter"레이블이 있고 float 인 한이 값이 반환됩니다.
금괴에 감사드립니다. – Gorilla3D