तो मेरी एफ # यात्रा में रिकॉर्ड करने के लिए मिल गया है और सबसे पहले वे खतरनाक लगते हैं। सबसे पहले यह चालाक लग रहा था:एफ # रिकॉर्ड्स: खतरनाक, केवल सीमित उपयोग के लिए, या अच्छी तरह से उपयोग की गई कार्यक्षमता?
type Card = { Name : string;
Phone : string;
Ok : bool }
let cardA = { Name = "Alf" ; Phone = "(206) 555-0157" ; Ok = false }
यह विचार कि कार्ड ए कार्ड से मेल खाता है। नहीं सरलीकृत पैटर्न यहाँ मिलान उल्लेख करने के लिए:
let withTrueOk =
list
|> Seq.filter
(function
| { Ok = true} -> true
| _ -> false
)
समस्या है:
type Card = { Name : string;
Phone : string;
Ok : bool }
type CardTwo = { Name : string;
Phone : string;
Ok : bool }
let cardA = { Name = "Alf" ; Phone = "(206) 555-0157" ; Ok = false }
carda CardTwo प्रकार है जो मैं अनुमान लगा रहा हूँ आदेश में सब कुछ चल रहा है एफ # के साथ क्या करना है की अब है।
अब यह एक असंभव स्थिति हो सकती है क्योंकि दो प्रकार के समान हस्ताक्षर लेने का मौका कभी नहीं हो सकता है, लेकिन यह एक संभावना है।
कुछ रिकॉर्डिंग कर रहा है जिसमें केवल सीमित उपयोग है या क्या मैं इसे सिर्फ सोचने पर हूं?
आप इसे ओवरइंक कर रहे हैं - अपने रिकॉर्ड तत्वों को अलग-अलग नाम दें या पूरी तरह योग्य करें कि आप किस रिकॉर्ड प्रकार का इरादा रखते हैं मिलान/तत्काल उदाहरण के लिए 'कार्ड ए = {कार्डनाम = "अल्फ" दें; फोन = "(206) 555-0157"; ठीक = झूठा} '। – ildjarn
डिफ़ॉल्ट रूप से आईएमएचओ उत्परिवर्तन, विरासत और संरचनात्मक समानता की कमी कक्षाओं को रिकॉर्ड से अधिक खतरनाक बनाती है, लेकिन आप इसके बारे में शिकायत करने वाले कई लोगों को नहीं देखते हैं ;-) –
@MauricioScheffer डिफ़ॉल्ट रूप से उस शून्यता में जोड़ें। –