如何在F#中创建结构的新实例?

Eri*_*and 7 f#

我觉得这个真的很蠢,但我很难找到这方面的文档.

如果我声明一个这样的结构:

type BuildNumber = 
    struct
        val major : int
        val minor : int
        val build : int
        val revision : int
    end
Run Code Online (Sandbox Code Playgroud)

然后我如何创建该BuildNumber类型的新实例?

Dav*_*haw 3

您使用new关键字并为其定义一个构造函数。

例如:

type simple = 
    struct
        val A : int
        val B : int
        new (a: int, b: int) = { A = a; B = b; }
    end

let s = new simple(1, 2)
Run Code Online (Sandbox Code Playgroud)

  • 如果您正在设计结构类型,需要注意的是,结构始终可以零初始化(即使用“无参数构造函数”创建),这与引用类型不同,引用类型要么为空,要么必须通过真正的声明构造函数。因此,如果您向结构体添加方法,请确保始终处理所有字段均为默认值的情况(此处理可能就像抛出无效操作异常一样简单)。 (4认同)