2011-04-09 14 views

उत्तर

1

मैं on नहीं कि, सहज, match, या संबंधित विधि =~, समानता के कुछ प्रकार, व्यक्त करता है के रूप में तथ्य यह है कि =~ समानता = और तुल्यता ~ संबंधों (माणिक में नहीं बल्कि गणित के क्षेत्र में) भी शामिल है में परिलक्षित। लेकिन यह पूरी तरह से एक समानता संबंध नहीं है, और समानता के तीन सिद्धांतों (रिफ्लेक्सिविटी, कम्यूटिटीविटी, ट्रांजिटिविटी), विशेष रूप से कम्यूटिटी इस संबंध में बनाए रखने के लिए उचित लगता है; यह प्रोग्रामर के लिए प्राकृतिक है कि string.match(regex) या string =~ regex का अर्थ regex.match(string) या regex =~ string जैसा ही होगा। मैं खुद को याद रखूंगा कि क्या परिभाषित किया गया है और दूसरा नहीं। वास्तव में, कुछ लोगों को यह अजीब लगता है कि विधि ===, जो हमें किसी तरह की समानता की याद दिलाती है, कम्यूटिव नहीं है, और question एस उठाई है।

4

विभिन्न वस्तुओं से लटकने के अलावा (जो कभी-कभी इसे दूसरे के बजाय कॉल करने के लिए अधिक सुविधाजनक बनाता है), वे वही हैं। औचित्य यह है कि वे दोनों उपयोगी हैं और कभी-कभी दूसरे की तुलना में अधिक सुविधाजनक होता है।

+2

मुझे वास्तव में उस औचित्य को पसंद नहीं है (शायद वहां से बेहतर नहीं है "वे वहां हैं, इसलिए इसके साथ रहें")। वे दोनों उपयोगी हैं क्योंकि दोनों के पास * समान * उपयोग है। मुझे तर्क दिया जा सकता है कि एक का अस्तित्व अन्य बेकार बनाता है। –

+1

सिवाय इसके कि उनके पास समान उपयोग नहीं है। उनके पास बहुत ही समान उपयोग हैं। किसी भी घटना में, मुझे विश्वास नहीं है कि उन्हें औचित्य की आवश्यकता है। यदि आप वास्तव में एक रूबी भाषा सुविधा चाहते हैं जिसके लिए औचित्य की आवश्यकता है (और इसकी कमी है), 'के लिए ... में ...' loops के लिए जाएं। –

+2

तो वे वही नहीं हैं? क्या आप इसे प्रतिबिंबित करने के लिए अपना उत्तर सुधार सकते हैं? –

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