gpt4 book ai didi

F# 记录 : Dangerous, 仅用于有限用途,还是使用良好的功能?

转载 作者:行者123 更新时间:2023-12-04 08:57:43 26 4
gpt4 key购买 nike

所以已经开始记录我的 F# 之旅,起初它们看起来相当危险。起初这似乎很聪明:

type Card = { Name  : string;
Phone : string;
Ok : bool }

let cardA = { Name = "Alf" ; Phone = "(206) 555-0157" ; Ok = false }

cardA 模式与 Card 相匹配的想法。更不用说这里的简化模式匹配:
let withTrueOk =
list
|> Seq.filter
(function
| { Ok = true} -> true
| _ -> false
)

问题是:
type Card = { Name  : string;
Phone : string;
Ok : bool }

type CardTwo = { Name : string;
Phone : string;
Ok : bool }

let cardA = { Name = "Alf" ; Phone = "(206) 555-0157" ; Ok = false }

cardA 现在是 CardTwo 类型,我猜这与 F# 按顺序运行所有内容有关。

现在这可能是一种不可能的情况,因为可能永远不会有机会将相同的签名呈现为两种类型,但这是一种可能性。

正在录制一些用途有限的东西,还是我只是想多了?

最佳答案

它们并不危险,而且不仅限于有限使用。

我认为您有两种类型的成员相同是非常罕见的。但是,如果确实遇到这种情况,则可以限定要使用的记录类型:

let cardA = { Card.Name = "Alf" ; Phone = "(206) 555-0157" ; Ok = false }

记录对于创建(主要是)不可变的数据结构非常有用。事实上,您可以轻松地创建一个只更改一些字段的副本,这一点也很棒:
let cardB = { cardA with Ok = true }

关于F# 记录 : Dangerous, 仅用于有限用途,还是使用良好的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8823682/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com