私の型の階層がVisual Studioで型の並べ替えを処理していないサンプルアプリケーションをビルドしています。どのような方法でファイルを整理しようとしても(上、下)、すべてのクラスを定義することはできません。F#クラスの並べ替えVisual Studio
そこで彼らは、F#プロジェクトで
type Artist() =
let mutable artistId = 0
let mutable name = String.Empty
member x.ArtistId
with get() = artistId
and set (value) = artistId <- value
member x.Name
with get() = name
and set (value) = name <- value
type Genre() =
let mutable name = String.Empty
let mutable genreId = 0
let mutable description = String.Empty
let mutable albums = [new Album()]
member x.Name
with get() = name
and set (value) = name <- value
member x.GenreId
with get() = genreId
and set (value) = genreId <- value
member x.Description
with get() = description
and set (value) = description <- value
member x.Albums
with get() = albums
and set (value) = albums <- value
and Album() =
let mutable title = String.Empty
let mutable genre = new Genre()
let mutable albumId = 0
let mutable genreId = 0
let mutable artistId = 0
let mutable price : decimal = Decimal.Zero
let mutable albumArtUrl = String.Empty
let mutable artist = new Artist()
member x.Title
with get() = title
and set (value) = title <- value
member x.Genre
with get() = genre
and set (value) = genre <- value
member x.AlbumId
with get() = albumId
and set (value) = albumId <- value
member x.GenreId
with get() = genreId
and set (value) = genreId <- value
member x.ArtistId
with get() = artistId
and set (value) = artistId <- value
member x.Price
with get() = price
and set (value) = price <- value
member x.AlbumArtUrl
with get() = albumArtUrl
and set (value) = albumArtUrl <- value
member x.Artist
with get() = artist
and set (value) = artist <- value
あるために、したがって、上記の場合には、私はエラー「アルバム」が定義されていません取得します。
これを解決する方法はありますか。それとも、私のタイプの階層構造の全体を再考する必要がありますか?
そこで、基本的ジャンルのタイプは、アルバムとアルバムの種類はフィールドとしてジャンルを含むリストが含まれています。 F#でこのような階層を定義することは、何とか可能ですか? – netmatrix01
完全な答えを書くのに快適なコンピュータの近くではなく、簡単に言えば、同じモジュール/名前空間に型を置くと、相互に再帰的な型を持つことができます。それらを順番に並べて、2番目の "type"キーワードをキーワード "and"に置き換えてください。 F#の種類に関するMSDNの記事に行くと、より完全な説明が得られます。 –