gpt4 book ai didi

f# - 是否可以打开类型提供者提供的命名空间?

转载 作者:行者123 更新时间:2023-12-02 11:24:30 24 4
gpt4 key购买 nike

有没有办法打开 type provider 提供的类型的命名空间执行?我问,因为一些生成的类型名称路径在代码中非常长且难看。我使用了类型缩写来缓解这个问题,但显然这是一个手动过程。 F# open 关键字不支持此功能。还有其他方法吗? 更新:正如答案和评论中指出的那样,这是错误的。您可以打开类型提供的命名空间。我没有意识到我正在寻找深层嵌套类型,而不是命名空间。

最佳答案

这很棘手 - 参数化类型提供程序(例如标准 SQL 提供程序或 XML 和 JSON 的 F# 数据提供程序)需要将它们生成的所有类型(表示表、XML 节点等)放入主生成类型中。因此,您可能想要使用的所有类型都隐藏在某处,作为主类型的嵌套类型(指定了参数)。

这是有道理的 - 如果您使用带有多个参数的类型提供程序,则为每个配置生成的类型必须是单独的。

正如 @kvb 指出的那样,您无法打开嵌套类型,但您可以使用类型别名来减轻痛苦。例如,使用 F# Data,我可以定义一个别名 R,只需两个附加字符即可访问所有生成的域类型:

#r @"..\packages\FSharp.Data.1.1.10\lib\net40\FSharp.Data.dll"
open FSharp.Data

type RssFeed = XmlProvider<"http://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml">
type R = RssFeed.DomainTypes

let printTitle (itm:R.Item) = printfn "%A" itm.Title

关于f# - 是否可以打开类型提供者提供的命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19811847/

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