我想在 F# 中编写这个 C# 的等价物:
struct Vector2 {
public readonly int X;
public readonly int Y;
public Vector2(int x, int y) {
X = x;
Y = y;
}
}
这迫使用户提供参数来创建实例[编辑:这对于值类型是错误的 - 所有值类型都有一个默认构造函数]。也可以为默认 Vector2 提供静态只读字段,即 Vector2.Zero。
看起来获取公共字段的唯一方法是通过“val”关键字,但似乎不允许我使用默认构造函数初始化它们,而且我不想有两个构造函数:
[<Struct>]
type MyInt(value) =
val public Value : int = value;;
val public Value : int = value;;
-------------------------------^
stdin(7,32): error FS0010: Unexpected symbol '=' in member definition
我知道这可以通过成员绑定来完成,但是如果我理解的话,这会创建属性,而不是字段。