我有點問過這個問題,所以很抱歉再次提出類似的問題。但不幸的是我不能真正理解如何設計一個歧視的工會。F#瞭解歧視工會
,所以我有一堆看起來像
type Artist(artistId : int, name : String) = do if name = null then nullArg String.Empty new(artistId: int) = Artist(artistId) member x.ArtistId = artistId member x.Name = name
and Genre() = let mutable name = String.Empty let mutable genreId : int = 0 let mutable description = String.Empty let mutable albums = List.empty 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 albumId = 0 let mutable genreId = 0 let mutable artistId = 0 let mutable price : decimal = Decimal.Zero let mutable albumArtUrl = String.Empty let mutable genre = new Genre() let mutable artist = new Artist(artistId) 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
enter code here
I tried defining the above as a Discriminated union based on suggestions by some of F# guru's
which i defined like below
type Name = string type AlbumId = int
type Artist = | ArtistId of int | Artist of Name
type Album = | Title of string | Price of decimal | Album of AlbumId * Artist | AlbumArtUrl of string
type Genre = | GenreId of int | Genre of Name * Album list
enter code here
數據結構,但現在我無法弄清楚如何將我填充我識別聯合同樣地,我與這只是性質我簡單的F#類型做什麼? 。
有人可以幫我解釋一下嗎?我一直在閱讀歧視工會,但不會說我完全理解他們。
考慮到您最近一直在問的所有F#問題,在這一點上,真的值得您花時間閱讀F#上的Wikibook(由可敬的@Juliet撰寫)或投資於F#的書籍。朱麗葉的Wikibook非常好,所以你可能想從那裏開始。但是沒有任何意思 - 你需要花點時間明智地去嘗試一些基本原理。我認爲如果你這樣做,你會更好地掌握F#。 –
2012-02-08 20:29:09