gpt4 book ai didi

泛型:类型应该对另一种类型进行操作,而是对声明的文字值进行操作?

转载 作者:行者123 更新时间:2023-12-02 20:15:08 26 4
gpt4 key购买 nike

我正在尝试理解以下语法:

type CarProvider = JsonProvider<JsonPath>

具体:

JsonProvider<JsonPath> // What is this actually doing?

我想将其读作:

“让有一个名为 CarProvider 的类型,它本质上是一个对这个特定字符串值(即某个文件路径)进行操作的 JsonProvider 类型”。

但是,我认为对于泛型,类型可以对其他类型进行操作。然而,在本例中,我们有一个对字符串值进行操作的类型 (JsonProvider),而不是实际类型。

有人可以根据上述示例语法礼貌地向我介绍 F# 中的泛型吗?

上下文:

open FSharp.Data

[<Literal>]
let JsonPath = "http://localhost:48213/api/cars"

type CarProvider = JsonProvider<JsonPath>

最佳答案

您在示例中看到的是 Type Provider在行动中。 “静态参数”(尖括号中的位)是一个常量表达式,因此在设计时语言可以“动态”地为您提供来自此输入的类型。

类型提供程序的语法使用泛型类型参数扩展了用于命名类型的语法,我认为这就是困惑的来源。需要明确的是,这不是泛型。

您阅读示例的方式是绝对正确的。此类型提供程序的真正酷之处在于,您在此类型上获得的 IntelliSense 将来自 HTTP API 调用返回的 JSON,该 JSON 是在您键入时传入的 JsonPath

关于泛型:类型应该对另一种类型进行操作,而是对声明的文字值进行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41653738/

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