में सरल प्रकार का परीक्षण मैं थोड़ी देर के लिए googling रहा है ... ठीक है, मुझे खेद है, यह पेटी के लिए आसान है, लेकिन वर्ग प्रकार की तुलना करने के लिए एफ # में एक ऑपरेटर है, जैसे 'है' कीवर्ड सी # में? मैं एक पूर्ण उड़ा मैच स्टेटमेंट का उपयोग नहीं करना चाहता हूं या चीजों को कास्टिंग शुरू नहीं करना चाहता हूं। चीयर्सएफ #
Q
एफ #
17
A
उत्तर
25
आप :?
निर्माण दोनों एक पैटर्न (match
अंदर) के रूप में उपयोग कर सकते हैं या एक ऑपरेटर के रूप में:
let foo = bar :? System.Random
यह अलग ढंग से सी # में की तुलना में थोड़ा व्यवहार करती है, क्योंकि संकलक अभी भी संकलन में कुछ जांच करने की कोशिश करता -पहर। उदाहरण के लिए, यह इस का उपयोग करने के लिए यदि परिणाम निश्चित रूप से false
होगा एक त्रुटि है:
let bar = 42
let foo = bar :? System.Random // Error
मुझे नहीं लगता कि यह भ्रम हो सकता है, लेकिन आप हमेशा box
जोड़ सकते हैं obj
के तर्क परिवर्तित करने के लिए है, जो किसी भी प्रकार के खिलाफ परीक्षण किया जा सकता है:
let foo = box bar :? System.Random
6
यदि आप चाहते हैं एक सामान्य सी # करने वाली एफ # त्वरित संदर्भ, देख
जो इस प्रश्न और कई अन्य लोगों का उत्तर देता है।
मुझे लगता है कि यह किया गया है ... यदि मैं इंटरैक्टिव विंडो में इसके साथ खेलता हूं तो यह "टाइप बाधा मेल नहीं खाता" त्रुटियों को जारी रखता है अगर वे एक ही प्रकार के नहीं हैं जो मुझे सुगंध से थोड़ा फेंक देता है ... यह लगता है कि वास्तविक संपादक में ठीक काम करता है। –
@Ciemnl - मैंने भ्रमित चेतावनियों के संभावित स्रोत के बारे में कुछ जानकारी जोड़ा। मुझे यकीन नहीं है कि आप "प्रकार बाधा मेल नहीं खा सकते" हालांकि। –
हाँ यही कारण है कि ... यह देखने के लिए कि क्या यह काम करता है, संकलक मेरे त्वरित परीक्षण के साथ बहुत चालाक था। मैंने एफ # को कम करके आंका! मैं इस भाषा के बारे में सोचने के लिए वास्तव में प्रभावित हूं ... –