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

Hei*_*bug 15 f# list

我从几天开始学习F#,所以这是一个新手问题:

我已经学会了这种方式声明一种新类型:

type GameEntity = 
    {
        Position : Vector3<m>
        Velocity : Vector3<m/s>
        Acceleration : Vector3<m/s^2>
    }
Run Code Online (Sandbox Code Playgroud)

(Vector3和Meausure在其他地方宣布..这很好用).现在我想声明另一种在其中存储GameEntity列表的类型.我试过这样的事情:

type GameWorld = 
    {
        name : string;
        entities : GameEntity = []   //error
    }
Run Code Online (Sandbox Code Playgroud)

有人能告诉我正确的语法来声明以前定义的类型(GameEntity)的列表(实体)吗?

Vit*_*liy 16

您可以使用:

entities : GameEntity list
Run Code Online (Sandbox Code Playgroud)

要么

entities : List<GameEntity>
Run Code Online (Sandbox Code Playgroud)


pad*_*pad 6

要向Vitaliy的答案添加更多细节,您尝试声明的是F#中的记录:

type GameWorld = 
    {
        name : string;
        entities : GameEntity list
    }
Run Code Online (Sandbox Code Playgroud)

使用记录,您可以使用模式匹配,这在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
Run Code Online (Sandbox Code Playgroud)