관련 레코드를 정의하는 방법이 필요합니다. 예를 들어,F #의 레코드 변형
type Thing = { field1: string; field2: float }
type ThingRecord = { field1: string; field2: float; id: int; created: DateTime }
또는 너무 많은 보일러를 쓸 필요없이, 다른 하나에서 변환하는 방법과 함께
type UserProfile = { username: string; name: string; address: string }
type NewUserReq = { username: string; name: string; address: string; password: string }
type UserRecord = { username: string; name: string; address: string; encryptedPwd: string; salt: string }
. 전체에서 심지어 첫 번째 예는 다음과 같습니다
type Thing =
{ field1: string
field2: float }
with
member this.toThingRecord(id, created) =
{ field1 = this.field1
field2 = this.field2
id = id
created = created } : ThingRecord
and ThingRecord =
{ field1: string
field2: float
id: int
created: DateTime }
with
member this.toThing() =
{ field1 = this.field1
field2 = this.field2 } : Thing
당신이 field10
등까지 얻을, 그것은 책임으로 가져옵니다.
저는 현재 리플렉션을 사용하여 안전하지 않은 (그리고 느린) 방식으로이 작업을 수행하고 있습니다.
이 요구를 충족시킬 uservoice의 정의를 기록하기 위해 with
구문을 확장하도록 요청을 추가했습니다.
하지만 이미 이것을 할 수있는 형식 안전 방법이 있습니까? 어쩌면 유형 공급자가 있습니까?
Bummer, 아무도 기존 솔루션을 갖고 있지 않다면 다음 주에이 작업을 계획하고 있었지만 형식 공급자가 레코드 유형을 지원하지 않는다는 사실이 다소 그 아이디어를 없앴습니다. –
글쎄요, 2 주일이면 타입 제공자가 레코드 유형을 생성하도록 항상 시작할 수 있습니다;) – scrwtp
완전히 기꺼이하지만 며칠을 절약 할 수 있습니다. –