私はこの種の質問を早く受けました。しかし残念なことに、私は差別化された組合をどのように設計するのかを本当に理解することができません。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#の本に投資する。 JulietのWikibookはかなり良いので、そこから始めたいと思うかもしれません。しかし、不快感はありませんでした。あなたは時間をかけて、いくつかのファンダメンタルズを落とすことをお勧めします。もしあなたがそうしたら、あなたはF#をもっとよく把握するでしょう。 –