gpt4 book ai didi

types - 是否可以在 F# 中使用本地类型

转载 作者:行者123 更新时间:2023-12-05 00:55:15 28 4
gpt4 key购买 nike

本地类型是指只能在特定函数中访问的类型

例如,假设我想获取一些数据,对其进行格式化,然后将其序列化为 json。

let parse data = // hypothetical scenario
type Record = { root : string[] }
let record = { root = data }
JsonConvert.SerializeObject record

似乎因为在其他任何地方都不需要该类型,所以这应该可以工作。但是,当我写这个时,我得到了编译错误。

有没有办法在 F# 中获得类似的功能?

最佳答案

F# 不支持函数范围内的类型声明。

最接近这一点的是定义一个模块并将类型保持在模块的本地:

module MyLogic = 
type private LocalType = {root: string []}
let serialize data =
let record = {root = data}
JsonConvert.SerializeObject record

如果您将序列化代码放入单独的模块中,那么您可以使用 private 将您的类型保密到模块中。修饰符,这也将使其保持在序列化功能的本地 - 不完全是单个函数,但相当接近。

除此之外,我认为您还需要 DataContract记录上的属性以使其实际工作。

关于types - 是否可以在 F# 中使用本地类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38448502/

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