2

自分が行っているプロジェクトのサンプルデータを作成しようとしています。そのためには、オブジェクト上にオブジェクトの配列を保持する単純なオブジェクト構造が必要です。この場合、レビューを保持できる批評家。コードは次のようになります。

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この式はReview[]型であると予想されて
いましたが、ここでは'リスト型です。

これを機能させるにはどうすればよいですか?

4

2 に答える 2

4

配列リテラルは、リストリテラルでは[| ... |]なく、[ ... ]次のようなものを使用します。

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

これはエラーを説明しています-配列リテラルの代わりにリストリテラルを使用しました

于 2012-12-23T23:55:01.697 に答える
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 ..。

于 2012-12-25T06:13:21.580 に答える