मैं धीरे-धीरे अपनी कई होम प्रोजेक्ट्स के लिए एफ # में स्विच कर रहा हूं लेकिन मैं थोड़ा सा अनुप्रयोगों को एक साथ तार करने के तरीके के बारे में थोड़ा सा स्टंप हूं, और अधिक विशेष रूप से क्रॉस-कटिंग चिंताओं।एफ # एप्लिकेशन स्ट्रक्चर लॉगिंग/रिपोजिटरीज इत्यादि
सी # में अगर मैं सामान लॉग करना चाहता हूं तो मैं प्रत्येक वर्ग में एक आईलॉगर पास करने के लिए निर्भरता इंजेक्शन का उपयोग करता हूं, और फिर इसे कोड से अच्छा और आसानी से कहा जा सकता है। मैं अपने परीक्षणों में सत्यापित कर सकता हूं कि एक विशेष स्थिति लॉग दिए गए हैं, एक नकली में गुजरकर और इसे सत्यापित करते हुए।
public class MyClass
{
readonly ILogger _logger;
public MyClass(ILogger logger)
{
_logger = logger;
}
public int Divide(int x, int y)
{
if(y == 0)
{
_logger.Warn("y was 0");
return 0;
}
return x/y;
}
}
एफ # में मैं मॉड्यूल एक बहुत अधिक उपयोग कर रहा हूँ, इसलिए यदि मुझे लगता है मैं सिर्फ इतना है कि खोलने के लिए और वहां से एक लॉग समारोह इस्तेमाल कर सकते हैं एक मॉड्यूल कहा जाता लॉगिंग था ऊपर
module Stuff
let divde x y =
match y with
| 0 -> 0
| _ -> x/y
बन जाएगा अब वाई होने के मामले में 0, लेकिन मैं यूनिट परीक्षण के लिए इसे कैसे इंजेक्ट करूँगा?
मैं प्रत्येक फ़ंक्शन को लॉग फ़ंक्शन (स्ट्रिंग -> इकाई) ले सकता हूं और फिर उन्हें वायरस करने के लिए आंशिक एप्लिकेशन का उपयोग कर सकता हूं लेकिन यह एक बहुत ही काम जैसा लगता है, जैसे कि एक नया फ़ंक्शन जो अंदर वास्तविक कॉल को लपेटता है एक लॉगिंग कॉल। क्या कोई विशेष पैटर्न या एफ # का थोड़ा सा है जो मुझे याद आ रहा है कि यह कर सकता है? (मैंने kprintf फ़ंक्शन देखा है लेकिन मुझे अभी भी पता नहीं है कि आप विभिन्न परीक्षण परिदृश्यों के लिए फ़ंक्शन निर्दिष्ट करते हैं, जबकि पूरे एप्लिकेशन के लिए ठोस कार्यान्वयन का उपयोग करते हुए)
इसी तरह आप एक संग्रह को कैसे रोकेंगे वह डेटा लाया? क्या आपको कुछ कक्षाओं को तत्काल स्थापित करने और सीआरयूडी कार्यों को सेट करने की आवश्यकता है, या आपके द्वारा खोले जाने वाले मॉड्यूल (#define से अलग) इंजेक्ट करने का कोई तरीका है
http के लिए एक ही तकनीक सी # से कि आप जानते हैं कि उपयोग करने के लिए अनुमति चाहिए समान है /stackoverflow.com/questions/2003487/architectural-thinking-in- कार्यात्मक-भाषाएं http://stackoverflow.com/questions/192090/how-do-you-design-a- कार्यात्मक- प्रोग्राम –