sách gpt4 ai đã đi

f# - 记录 "with"语法中的泛型

In lại 作者:行者123 更新时间:2023-12-02 11:59:22 29 4
mua khóa gpt4 Nike

如果我有一条包含通用字段的记录,在更改通用字段时是否有任何方法可以模仿方便的 với 语法?

即如果我有

type User<'photo> = // 'photo can be Bitmap or Url
{ first: string; last: string; address: string; phone: string; photo: 'photo }

我希望能够写出类似的东西

let loadUser(user: User): User =
{ user with
photo = download user.photo }

但看起来我必须写这个。

let loadUser(user: User): User =
{ first = user.first
last = user.last
address = user.address
phone = user.phone
photo = download user.photo }

有没有办法获得第一个语法?

1 Câu trả lời

不直接,但您可以将您的Người sử dụng 变成仿函数(对于照片 部分):

let fmap (f : 'a -> 'b) (user: User<'a>): User<'b> =
{ first = user.first
last = user.last
address = user.address
phone = user.phone
photo = f user.photo }

一次并写入(例如):

let loadUser (user : User) : User =
fmap download user

如果您愿意,您也可以重命名 fmapwithPhoto let loadUser = withPhoto download :D

Hiện nay,photo 部分是任何类型的数据/类型可能有点奇怪,所以我会考虑将这部分重命名为 giá trị - 但这只是我

关于f# - 记录 "with"语法中的泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30398881/

29 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com