区分联合类型的值的正确名称是什么?
What is the correct designation for values of discriminated union types?
考虑这个类型定义:
type ChoiceOne =
| A
| B
和这个绑定
let c1 = A
我认为将其翻译成自然语言的正确方法是“构造 ChoiceOne 类型的值 A 并将其绑定到名称 c1”。
现在看看下一个类型定义和绑定:
type ChoiceTwo =
| A of int
| B of float
let c1 = A 1
我现在看到了几种描述这里发生的事情的方法:
- “构造 ChoiceTwo 类型的值 A ...”(那么 1 呢?)
- “构造了 ChoiceTwo 类型的值 1 ...”(那么 A 呢?)
- "具有(内部值?关联值?...)1 的类型 ChoiceTwo 的值 A 构造..."
我想选项 3 最能描述这种情况,但我如何才能正确指定值 1 相对于类型 ChoiceTwo 的(其他?)值 A?
这都是吹毛求疵。没有人真正关心在大学测验之外如何准确地说出这些话,即便如此,我还是建议您转学到另一所大学 :-)
但如果你真的想劈头发,我们开始吧。
在您的第一个示例中,值 A
不是“构造的”。由于它没有参数,它的实例只能有一个,而且那个实例一直存在,所以没有必要去“构造”它。
可以肯定的是,A
可能仍然被称为“构造函数”,但它同时也是一个“值”。
在第二个例子中,有时说“构造了一个值A 1
”,但更多时候是“构造了一个值A
构造参数 1
"
这是我使用的术语,我相信它已被广泛接受,使用我自己的例子:
type MyDU =
| A of int
| B
A
是个案例
A
也是一个接受 int
和 returns 类型值的函数 MyDU
- 因此,
A 1
是 MyDU
类型的值
B
是个案例
B
也是类型 MyDU
的值
这里唯一需要的词是“case”、“value”、“function”和“type”。不要使用“构造”这个词。一般来说,在谈论 F# 代码时,如果您可以准确地将您使用的任何单词替换为我推荐的单词,那就这样做吧!
考虑这个类型定义:
type ChoiceOne =
| A
| B
和这个绑定
let c1 = A
我认为将其翻译成自然语言的正确方法是“构造 ChoiceOne 类型的值 A 并将其绑定到名称 c1”。
现在看看下一个类型定义和绑定:
type ChoiceTwo =
| A of int
| B of float
let c1 = A 1
我现在看到了几种描述这里发生的事情的方法:
- “构造 ChoiceTwo 类型的值 A ...”(那么 1 呢?)
- “构造了 ChoiceTwo 类型的值 1 ...”(那么 A 呢?)
- "具有(内部值?关联值?...)1 的类型 ChoiceTwo 的值 A 构造..."
我想选项 3 最能描述这种情况,但我如何才能正确指定值 1 相对于类型 ChoiceTwo 的(其他?)值 A?
这都是吹毛求疵。没有人真正关心在大学测验之外如何准确地说出这些话,即便如此,我还是建议您转学到另一所大学 :-)
但如果你真的想劈头发,我们开始吧。
在您的第一个示例中,值 A
不是“构造的”。由于它没有参数,它的实例只能有一个,而且那个实例一直存在,所以没有必要去“构造”它。
可以肯定的是,A
可能仍然被称为“构造函数”,但它同时也是一个“值”。
在第二个例子中,有时说“构造了一个值A 1
”,但更多时候是“构造了一个值A
构造参数 1
"
这是我使用的术语,我相信它已被广泛接受,使用我自己的例子:
type MyDU =
| A of int
| B
A
是个案例A
也是一个接受int
和 returns 类型值的函数MyDU
- 因此,
A 1
是MyDU
类型的值
B
是个案例B
也是类型MyDU
的值
这里唯一需要的词是“case”、“value”、“function”和“type”。不要使用“构造”这个词。一般来说,在谈论 F# 代码时,如果您可以准确地将您使用的任何单词替换为我推荐的单词,那就这样做吧!