Как объявить список внутри объявления типа в F # - PullRequest
13 голосов
/ 14 ноября 2011

Я изучаю 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 ]

14 голосов
/ 14 ноября 2011

Вы можете использовать:

entities : GameEntity list

или

entities : List<GameEntity>
6 голосов
/ 14 ноября 2011

Чтобы добавить больше деталей к ответу Виталия, вы попытались объявить запись на F #:

type GameWorld = 
    {
        name : string;
        entities : GameEntity list
    }

С записями вы можете использовать сопоставление с образцом, которое действительно очень эффективно в F #. Если вам нужно взаимодействовать с другими компонентами .NET, написанными на C # или VB.NET, класс может быть хорошим выбором. Также класс позволяет разрешать привязки в их объявлениях, что не относится к записям:

type GameWorld(name: string, entities: GameEntity list) = 
        let mutable state = 1 // class allows let bindings

        member x.Name = name;
        member x.Entities = entities
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...