जब तक आप कुछ जटिल नहीं कर रहे हैं, तो मैं कक्षाओं के बजाय रिकॉर्ड का उपयोग करने की सिफारिश करता हूं। अचल स्थिति, संरचनात्मक समानता, पैटर्न मिलान, आदि:
type Playlists = {
Albums: DbSet;
Genres: DbSet
}
आप रिकार्ड के क्षेत्रों को आसानी से प्राप्त कर सकते हैं: असल में, वे अतिरिक्त सुविधाओं के साथ वर्ग हैं
let p = {Albums = ...; Genres = ...}
let albums = p.Albums
let genres = p.Genres
डिफ़ॉल्ट रिकॉर्ड क्षेत्रों में अडिग हैं; आप रिकॉर्ड में म्यूटेबल फ़ील्ड घोषित कर सकते हैं, लेकिन इसे खराब अभ्यास माना जाता है। हालांकि आप गुण सेट नहीं कर सकते हैं, आप पुराने से एक नया रिकॉर्ड बना सकते हैं। डिफ़ॉल्ट अचल स्थिति सामान्य रूप से एक समस्या नहीं है, इसके अलावा यह कोड अधिक कार्यात्मक और के बारे में तर्क करने की आसान बना देता है:
let p = {Albums = a; Genres = g}
// Create new records by updating one field
let p1 = {p with Albums = a1}
let p2 = {p with Genres = g2}
आप कक्षाएं बनाने के लिए जोर देते हैं, तो स्पष्ट मानकों के साथ एक निर्माता का उपयोग कर की सिफारिश की है:
type Playlists(a: DbSet, g: DbSet) =
let mutable albums = a
let mutable genres = g
// ...
जब एक डिफ़ॉल्ट निर्माता के लिए आवश्यक है, तो आप गैर नल क्षेत्रों के लिए Unchecked.default<'T>
उपयोग कर सकते हैं, या बेहतर उनके डिफ़ॉल्ट कंस्ट्रक्टर्स का उपयोग करें:
// Set fields using dump values
let mutable albums = new DbSet()
let mutable genres = new DbSet()
लेकिन सुनिश्चित करें कि आप वास्तव में उनका उपयोग करने से पहले उन फ़ील्ड को सेट करते हैं। जब आप एक परिवर्तनशील संपत्ति की जरूरत
एक बात - पैड की और TomasPetricek उत्तम जवाब के अलावा: अगर आप सही मायने में तो मैं इस धारणा है कि आप वर्ग या वर्ग की जरूरत है की जांच होगी "कार्यात्मक" बनने की कोशिश कर रहे हैं पहली जगह संरचनाओं की तरह। स्वचालित गुण किसी दिए गए वर्ग के अंदरूनी ऐप को अवगत कराकर छिपी हुई अच्छी जानकारी का उल्लंघन करते हैं। यदि आपको शेष ऐप के संपर्क में आने वाली कक्षा के अंदरूनी हिस्से की आवश्यकता है तो शायद आपको कक्षा में पहले स्थान की आवश्यकता नहीं है। मुझे लगता है कि मैं कह रहा हूं कि अगर आप सचमुच सोचने से विचार करना चाहते हैं कि सबकुछ कक्षा में होना है। –
ओह और एक और बात - जो आप काम कर रहे हैं उसे देखते हुए, आपको यह ब्लॉग पोस्टिंग सहायक मिल सकता है: http://bugsquash.blogspot.com/2011/11/lenses-in-f.html –