2012-05-21 12 views
6

Difference between equal to and exactly equal to term comparison operators अंतर बताते हैं, लेकिन एक महत्वपूर्ण सवाल यह भी है: जो एक का उपयोग करना चाहिए, जब मैं अन्य बातों के लिए तैरता तुलना नहीं है?जो == और =: = का उपयोग करना चाहिए?

"व्यावहारिक प्रोग्रामिंग Erlang" की सिफारिश की गई =: = और कहते हैं कि आप के बारे में == संदिग्ध होना चाहिए और केवल इसे का उपयोग किया जब तैरता के साथ काम कर। हालांकि यह भी कहता है कि बहुत से मौजूदा कोड इस नियम का पालन नहीं करते हैं।

तो मैं एक छोटे से दुविधा है। क्या मुझे आसपास के कोड के साथ स्थिरता के लिए "==" ( अन्य मानों पर फ्लोट की तुलना करने) का उपयोग करना चाहिए? क्या मुझे "=: =" उचित के रूप में उपयोग करना चाहिए, भले ही यह शेष फ़ाइल के साथ असंगत होगा? क्या मुझे फ़ाइल में अन्य अभिव्यक्तियों को "=: =" का उपयोग करने के लिए परिवर्तित करना चाहिए?

ट्रेडऑफ क्या हैं? क्या ऑपरेटर दूसरे की तुलना में अधिक कुशल है? यदि ऑपरेटरों में से एक को संख्या होने की गारंटी नहीं है, तो क्या इससे कोई फर्क पड़ता है कि मैं किस का उपयोग करता हूं? क्या कोई छुपा जाल नहीं है (कहें, wrt। विशेष फ्लोट वैल्यू जैसे NaN, Inf, आदि .. - अगर एरलांग इनका समर्थन करता है)।

Btw, codebase मैं का सामना करना पड़ रहा हूँ ejabberd है।

उत्तर

5

उपयोग =: = आप तैरता साथ ints की तुलना करने की जरूरत नहीं है, तो। प्रदर्शन वही है (या कम से कम अंतर मापने के लिए बहुत छोटा है) और NaN, inf आदि Erlang में मौजूद नहीं हैं।

कारण है कि इस्तेमाल किया == OTP पुस्तकालय कोड का एक बहुत कुछ है शायद इसलिए है क्योंकि =: = Erlang के लिए एक नहीं बल्कि हाल में शामिल है।

+2

खैर, =: = "एर्लांग में समवर्ती प्रोग्रामिंग" के पहले संस्करण (1 99 3) में वर्णित है, पृष्ठ 30. यदि यह आपके लिए हालिया है, तो आप शायद I से अधिक समय से हो सकते हैं :-) – RichardC

+1

किसी भी तरह, हाँ , आमतौर पर एक = = = का उपयोग करना चाहिए, क्योंकि यह वही समानता परीक्षण है जो पैटर्न मिलान में किया जाता है। == का उपयोग करते समय आपको अंकगणितीय समानता की आवश्यकता नहीं होती है, सूक्ष्म बग पेश कर सकती है, और डायलज़र को यह भी मानने के लिए मजबूर कर सकती है कि डेटा फ़्लोट हो सकता है भले ही आपको पता चले कि यह केवल पूर्णांक होना चाहिए। – RichardC

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

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