gpt4 book ai didi

f# - 在构造期间从自身内部引用记录

转载 作者:行者123 更新时间:2023-12-01 10:38:07 24 4
gpt4 key购买 nike

我正在尝试创建一条记录,该记录使用先前定义的字段之一来计算同一构造函数中另一个字段的值。例如

myRecordType = {Foo:int; Bar:int[]}

myRecord = {Foo = 5;
Bar = Array.init Foo (fun i -> i)}

当我尝试这样做时,它无法将 Foo 识别为已经存在。我也无法使用 myRecord.Foo 引用 Foo,但这是有道理的,因为 myRecord 尚未构建。但是我会认为 FooBar 会在同一个范围内,所以 Bar 可以访问 Foo ,但显然不是。

Bar 数组的大小取决于Foo 的值,那么如何设置这种格式的记录呢?

最佳答案

您不能引用其他字段,您甚至不应该认为字段评估的顺序是理所当然的。

你可以通过额外的 let 绑定(bind)来实现:

let myrecord = 
let calcedFoo = 5
{ Foo = calcedFoo; Bar = Array.init calcedFoo id }

您可以将记录构造表达式视为一个函数,其中赋值的右侧是传递给该函数的参数。

关于f# - 在构造期间从自身内部引用记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32406610/

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