कई अन्य राज्य से संबंधित प्रकार के बीच, मैं अपने कोड में निम्नलिखित रिकॉर्ड प्रकार है:कॉपी गुणों के बीच रिकॉर्ड्स
type SubmittedSuggestionData = {
SuggestionId : Guid
SuggestionText : string
Originator : User
ParentCategory : Category
SubmissionDate : DateTime
}
type ApprovedSuggestionData = {
SuggestionId : Guid
SuggestionText : string
Originator : User
ParentCategory : Category
SubmissionDate : DateTime
ApprovalDate : DateTime
}
ये उसके बाद निम्न में फ़ीड:
type Suggestion =
| SubmittedSuggestion of SubmittedSuggestionData
| ApprovedSuggestion of ApprovedSuggestionData
यह मैं देता राज्य पर निर्भर विशिष्ट व्यावसायिक तर्क करने के लिए राज्य मशीन शैली पैटर्न के साथ काम करने की क्षमता। (यह दृष्टिकोण से लिया गया है: http://fsharpforfunandprofit.com/posts/designing-with-types-representing-states/)
मैं एक समारोह है कि यह सरलतम रूप है में, बदल जाता है एक SubmittedSuggestion
एक ApprovedSuggestion
रहे हैं:
let ApproveSuggestion suggestion =
match suggestion with
| SubmittedSuggestion suggestion -> ApprovedSuggestion {}
इस समारोह के रूप में इस समय अधूरा है मैं क्या कर रहा हूँ संघर्ष समझने के लिए जब एक स्वीकृति स्वीकृत से स्वीकृत परिवर्तन में बदलती है, तो में 10 में की नई संपत्ति को पॉप्युलेट करते समय आप suggestion
में उत्तीर्ण से गुणों की प्रतिलिपि कैसे बनाते हैं?
let ApproveSuggestion suggestion =
match suggestion with
| SubmittedSuggestion {SuggestionId = suggestionId; SuggestionText = suggestionText; Originator = originator; ParentCategory = category; SubmissionDate = submissionDate} ->
ApprovedSuggestion {SuggestionId = suggestionId; SuggestionText = suggestionText; Originator = originator; ParentCategory = category; SubmissionDate = submissionDate; ApprovalDate = DateTime.UtcNow}
लेकिन है कि मेरे पास बहुत भीषण दिखता है:
मैं अगर मैं कुछ ऐसा किया कि यह काम करेगा लगता है।
क्या एक ही परिणाम प्राप्त करने का एक क्लीनर, अधिक संक्षिप्त तरीका है? मैंने with
कीवर्ड का उपयोग करने का प्रयास किया है लेकिन यह संकलित नहीं हुआ है।
धन्यवाद
हमम, मुझे इस एक @ Vandroiy की तरह पसंद है। मेरे राज्य भारी रूप से भिन्न नहीं होंगे, इसलिए यह मेरे लिए एक वैध समाधान भी हो सकता है। मैं इसे एक शॉट दूंगा और आपको बता दूंगा :) – Stu1986C