gpt4 book ai didi

f# - 从记录中引用通用值

转载 作者:行者123 更新时间:2023-12-04 13:46:35 26 4
gpt4 key购买 nike

下面是我用来从记录类型中按名称提取特定值的代码示例:

let ExtractVal1 = // signature - 'seq<float[]>[]'
projectCF // signature - 'seq<Records>[]'
|> Array.Parallel.map (fun x ->
x |> Seq.map (fun y -> y.Val1) // Val1 is one of the values in my record type
)

let ExtractVal2 =
projectCF
|> Array.Parallel.map(fun x->
x |> Seq.map (fun y -> y.Val2) // Val2 is another one of the values in my record type
)

以上工作正常,但会导致大量重复(因为我必须为我希望提取的 5 个值中的每一个重复此操作)。如果可以定义一个函数并将我想要提取的每个值的名称传递给它,那将会更加清晰。下面是我想做的事情的一个例子(虽然这段代码显然不起作用):

let ExtractAnyVal (anyval: MyRecord.x) = 
projectCF
|> Array.Parallel.map (fun x->
x |> Seq.map (fun y -> y.anyval)
)

let ExtractVal1 = ExtractAnyVal val1
let ExtractVal2 = ExtractAnyVal val2

我的问题是,我可以在 F# 中实现上述内容吗?

最佳答案

你为什么不把accessor函数做成这样的参数:

let extract f = 
projectCF
|> Array.Parallel.map (Seq.map f)

像这样使用它

let extractVal1 = extract (fun y -> y.Val1)
let extractVal2 = extract (fun y -> y.Val2)

请注意我无法测试代码,因为您没有包含足够的信息 - 所以可能会留下一些错误

关于f# - 从记录中引用通用值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34048197/

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