我想定义一个整数和浮点数列表,其中 [1,2.0] 应该是一个有效的构造。
例如,F# 是否在类型中具有 AND 或具有从 Number 派生的 int 和 float 的类型层次结构?
谢谢。
不,F# / .NET 没有像 Python 这样的数字塔,也没有Number
像 Java 这样的通用基本类型。
也许您可以为您的目的定义一个判别联合:
type Number =
| Float of float
| Int of int
let x = [Float(3.2); Int(2)] //val x : Number list = [Float 3.2; Int 2]
F# 没有像 Lisp/Scheme 这样的数字塔。
唯一支持的联合类型是必须包含标签的不相交联合。你可以写:
type Num = Int of int | Float of float
[Int 1; Float 2.0]
上面的值有 type Num list
。要使用元素,您将使用模式匹配:
match num with
| Int x -> printf "%i" x
| Float x -> printf "%f" x