如何在F#中的类型声明中声明一个列表

时间:2011-11-14 14:13:11

标签: list f#

我从几天开始学习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)的列表(实体)吗?

2 个答案:

答案 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