2012-10-04 9 views
35

ऐसा लगता है कि यह keep_if हो सकता है।रूबी में ऐरे # अस्वीकार के विपरीत क्या है?

यदि हां, तो इसे keep क्यों नहीं कहा जाता है?

+3

http://www.ruby-doc.org/core-1.9.3/Array.html पर देखकर, यह बहुत स्पष्ट लगता है कि 'keep_if' वास्तव में विपरीत है (एक ही तर्क है लेकिन' सत्य 'से तुलना को फ़्लिप करता है 'झूठी' के लिए)। क्या यह विधि विधि के बारे में एक सवाल है? – bdares

+0

@bdares 'keep_if' में 'अस्वीकार' के समान तर्क नहीं है। हालांकि, यह 'अस्वीकार' के रूप में एक ही तर्क हो सकता है, हालांकि। –

उत्तर

75
  • reject के विपरीत select है
  • reject! के विपरीत है select! (संपादन जगह में सरणी) (एक नई सरणी लौटने)
  • keep_if के विपरीत delete_if है (संपादन जगह में सरणी)
2

मुझे लगता है कि इसे अच्छी तरह से विचार-विमर्श सेमेन्टिक्स के साथ करना है, और मैं तर्क दूंगा कि यह सही है। मान लीजिए कि आपके पास पहले से ही चीजों का एक सेट है, "टी 1, टी 2, और टी 3"; अगर आप सबसेट को अस्वीकार करते हैं, तो आप कहते हैं "मैं टी 1 और टी 2 को अस्वीकार करता हूं"। आप टी 3 का उल्लेख नहीं करते हैं, क्योंकि यह आपकी कार्रवाई (आपके अस्वीकृति) से प्रभावित नहीं है: डिफ़ॉल्ट "रखना" है। लेकिन अगर आप जो रखना चाहते हैं उसे व्यक्त कर रहे हैं, और आप केवल "मैं टी 1 और टी 2 रखता हूं" कहता हूं, टी 3 की स्थिति को प्रश्न में बुलाया जाता है: आखिरकार, आपके पास पहले से ही टी 1 और टी 2 है, तो आपको यह कहने का क्या मतलब है ' उन्हें फिर से रखें (वे पहले से ही डिफ़ॉल्ट स्थिति में हैं, "रखें"), खासकर जब से आप पूरी तरह से टी 3 रखते हैं। वाक्यविन्यास "keep_if" का उपयोग करके, आप स्पष्ट रूप से संकेत दे रहे हैं कि एक शर्त (सरल या परिसर) है जो निर्धारित करेगी कि क्या रखा जाना है और क्या छोड़ा जाना है।

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