gpt4 book ai didi

f# - 我可以在它自己的类型定义中使用一个类型吗?

转载 作者:行者123 更新时间:2023-12-03 18:27:35 24 4
gpt4 key购买 nike

我正在尝试定义以下类型:

type lToken =
LInt of int
| LString of string
| LList of lToken list
| LFunction of string * LList

但我收到错误“LList”未定义。

有没有办法做我想做的事情 - 即使用我在他们自己的类型定义中定义的类型?

谢谢

最佳答案

正如其他人指出的那样,LList不是类型的名称,而只是可区分联合的构造函数的名称。在 F# 中,区分联合的情况恰好被编译为 .NET 类型,但这只是一个实现细节,您不能引用生成的类型。

如果要申报LFunction作为由 string 组成的类型转换和一个 LList然后你可以扩展定义(如 Brian 和 Marcelo 所建议的)或声明一个新类型(使用 type .. and 来声明递归类型):

type List = Token list 
and Token =
| LInt of int
| LString of string
| LList of List
| LFunction of string * List

PS:如果您正在编写 F#,那么我建议您遵循标准命名指南并使用 PascalCase为类型名称提供更具描述性的名称。 “我”代表什么?你能扩展它吗(由于类型推断,你不需要写类型名称)。

关于f# - 我可以在它自己的类型定义中使用一个类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4303130/

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