2012-12-23 55 views
2

我正在嘗試爲我正在執行的項目創建som示例數據。爲此,我需要一個簡單的對象結構,其中的對象包含對象數組。在這種情況下,可以進行評論的評論。代碼如下所示:F# - 定義對象數組

type Review = 
    { MovieName: string; 
    Rating: double } 

type Critic = 
    { Name: string; 
    Ratings: Review[] } 

let theReviews = [{ MovieName = "First Movie"; Rating = 5.5 }; { MovieName = "Second Movie"; Rating = 7.5 };] 

let theCritic = { Name = "The Critic"; Ratings = [{ MovieName = "First Movie"; Rating = 5.5 }; { MovieName = "Second Movie"; Rating = 7.5 };] } 

「評論」這一行工作正常,但我無法獲得「theCritict」行的工作。我得到的錯誤是:

錯誤1,預計這種表達有型 評論[]
但這裏有類型 「列表

我如何得到這個工作?

+0

請解釋downvotes 。 –

回答

1

其實你」在你的評論定義中重複使用數組,並在實現中列出......這些是真正不同的野獸,列表是無法更改(更好的併發性),並支持模式匹配,而數組是可變的。我建議你繼續使用列表,除了長集合真的很渴望)

,如果你想繼續使用列表,你可以做到這一點:

type Review = 
    { MovieName: string; 
    Rating: double } 


type Critic = 
    { Name: string; 
    Ratings: Review list } 

這裏你大概是列表和數組之間的差異的詳細列表:

http://en.wikibooks.org/wiki/F_Sharp_Programming/Arrays#Differences_Between_Arrays_and_Lists ...

4

數組文本使用[| ... |]而不是[ ... ]這是清單文字 - 你需要像

let theCritic = { Name = "The Critic"; Ratings = [|{ MovieName = "First Movie"; Rating = 5.5 }; { MovieName = "Second Movie"; Rating = 7.5 };|] } 

這解釋了錯誤 - 你用文字而不是數組文本列表

+0

謝謝。我只是在學習F#很好的知道。 –