我从几天开始学习F#,所以这是一个新手问题:
我已经学会以这种方式宣布一种新类型:
type GameEntity =
{
Position : Vector3<m>
Velocity : Vector3<m/s>
Acceleration : Vector3<m/s^2>
}
(Vector3和Meausure在其他地方宣布......这样可以正常工作)。现在我想声明另一种在其中存储GameEntity列表的类型。我试过这样的事情:
type GameWorld =
{
name : string;
entities : GameEntity = [] //error
}
有人能告诉我正确的语法来声明以前定义的类型(GameEntity)的列表(实体)吗?
答案 0 :(得分:14)
您可以使用:
entities : GameEntity list
或
entities : List<GameEntity>
答案 1 :(得分:6)
要向Vitaliy的答案添加更多细节,您试图声明的是F#中的记录:
type GameWorld =
{
name : string;
entities : GameEntity list
}
使用记录,您可以使用模式匹配,这在F#中非常强大。如果您需要与使用C#或VB.NET编写的其他.NET组件进行互操作,那么类可能是一个不错的选择。类也允许在声明中使用绑定,而记录不是这样的:
type GameWorld(name: string, entities: GameEntity list) =
let mutable state = 1 // class allows let bindings
member x.Name = name;
member x.Entities = entities