这是一个例子:
let my_instance = (1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
就其价值而言,您的类型不是新类型,它只是现有类型(3 个整数的元组)的方便缩写。没有构造函数的类型声明只是一个缩写,所以并不是我所说的“自定义”类型。
# ((1, 2, 3) : triple) = (1, 2, 3)
- : bool = true
Run Code Online (Sandbox Code Playgroud)
我不确定这对你来说重要,但如果你需要一个与其他任何类型都不兼容的新类型,你需要一个构造函数。像这样的东西:
type triple2 = T of int * int * int
Run Code Online (Sandbox Code Playgroud)
然后你可以创建一个这样的实例:
let my_instance2 = T (1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
这种新类型triple2与任何其他类型都不兼容(例如,triple):
# T (1, 2, 3) = (1, 2, 3)
Error: This expression has type 'a * 'b * 'c
but an expression was expected of type triple2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
448 次 |
| 最近记录: |