2010-12-11 15 views
23

यदि कोई शर्त नहीं है तो एफ # में सबसे अच्छा तरीका क्या है?एफ # यदि स्थिति नहीं है

अभी मैं इस तरह यह लिख रहा हूँ:

if condition <> true then do 

वहाँ यह लिखने के लिए किसी भी अन्य छोटे रास्ता नहीं है? उपयोग करने की तरह! ऑपरेटर?

if not condition then ... 

उम्मीद है कि एफ # के साथ भी काम करता है:

+0

डुप्लिकेट: http://stackoverflow.com/questions/239888/logical-negation-operator-in-f-equivalent – Orbling

+0

डुप्लिकेट के लिए खेद है। जब मैं खोज रहा था तब मैंने इसे नहीं देखा। –

+0

यह ठीक है, यह एक महत्वपूर्ण सवाल है, क्योंकि मेरे जवाब में चेतावनी के कारण, उन लोगों के लिए एक झगड़ा है जो '<> 'से अवगत नहीं हैं। – Orbling

उत्तर

19

OCaml में, आप "नहीं" कीवर्ड का उपयोग कर सकते हैं।

+3

+1: हाँ, एफ # में काम करता है। आवश्यकतानुसार माता-पिता के साथ आसपास की स्थितियां। – Juliet

+0

यह करता है। बस ऑपरेटर प्राथमिकता से सावधान रहें। –

+0

एएच! मैंने पहले यह कोशिश की लेकिन वह मुझे समझने में त्रुटि को समझने में असफल रहा। अब यह कीवर्ड का उपयोग कर ठीक काम कर रहा है। बहुत बहुत धन्यवाद! –

-14

मुझे एफ # पता नहीं है, लेकिन सी में, इसका उपयोग करके! ऑपरेटर मैं लिखने चाहते हैं:

if(!condition) { ... } 

जो के रूप में

if(condition == false) { ... } 
+4

'! 'ऑपरेटर एफ # में एक संदर्भ कक्ष का मूल्य प्राप्त करने के लिए है। आपको 'नहीं' फ़ंक्शन की आवश्यकता है। –

+1

@ टोमास पेट्रीसेक, मैंने "मैं नहीं जानता # #" के साथ शुरू किया। मैंने देखा कि अगर उसने शर्त की है तो <> सच है ... तो मैंने अनुमान लगाया "शायद वह नहीं जानता कि वह शर्त को अस्वीकार कर सकता है और एक ही परिणाम प्राप्त कर सकता है" – BlackBear

+1

अच्छा बिंदु, हालांकि मुझे लगता है कि यह उस बहुतायत से संपादन के लिए कर सकता है स्पष्ट। – Orbling

6

वहाँ not function है एक ही है, लेकिन यह केवल बूलियन चर के साथ काम करता है।

तो आप कह सकते हैं:

if (not condition) then do 

लेकिन वह सी-शैली भाषाओं में के रूप में अन्य प्रकार के साथ काम नहीं करेंगे।

दुर्घटना से ! का उपयोग न करें, क्योंकि यह अभी भी एफ # में एक ऑपरेटर है, यह dereference on a mutable reference cell है।

full operator documentation देखें।

23

अगर आप समझते हैं कि यह भी एक समारोह है नहीं है, तो आप पाइप अपनी हालत यह इतना तरह कोष्टक से बचने के लिए में कर सकते हैं:

if not <| condition param1 param2 then ... 

कारण की जा रही है अपनी हालत समारोह तर्क लेता है, तो आप की जरूरत नहीं है ऐसा करने के लिए

not (condition param1 param2) 

यह शायद एक छोटे से क्लीनर यह पहली तरीके से करना के बाद से ऐसा लगता है च # बजाय ऑपरेटर पूर्वता के लिए कोष्ठक पाइप के पक्ष में है।

+0

वाह! इस पर टिप के लिए धन्यवाद। मुझे नहीं पता था कि आप ऐसा करने के लिए पाइप का उपयोग कर सकते हैं। –

+0

मुझे यह पसंद है, 'अगर नहीं <| शर्त param1 param2 तो ... 'F # की शव में अच्छी तरह से फिट बैठता है, क्योंकि दोनों आसानी से टाइप, पढ़ और संशोधित होते हैं। माता-पिता इतने ओओ हैं ;-) – TaterJuice

संबंधित मुद्दे