2012-03-19 6 views
31

रूबी में पहला अंकुरित तत्व प्राप्त करने का सबसे तेज़ तरीका क्या है जिसके लिए एक ब्लॉक सही होता है?रूबी में पहला अंकुरित तत्व प्राप्त करने का सबसे तेज़ तरीका क्या है जिसके लिए एक ब्लॉक सही होता है?

उदाहरण के लिए:

arr = [12, 88, 107, 500] 
arr.select {|num| num > 100 }.first # => 107 

मैं select इच्छा के रूप में पूरे सरणी के माध्यम से चलने के बिना ऐसा करने के लिए, क्योंकि मैं केवल पहले मैच की जरूरत चाहते हैं।

मुझे पता है कि मैं each कर सकता हूं और सफलता पर तोड़ सकता हूं, लेकिन मैंने सोचा कि ऐसा करने के लिए मूल तरीका था; मुझे बस इसे दस्तावेज में नहीं मिला है।

उत्तर

61

कई कोर माणिक Array और Hash सहित कक्षाएं, Enumerable मॉड्यूल जो इन enumerations के साथ काम करने में कई उपयोगी तरीके प्रदान शामिल हैं।

इस मॉड्यूल find or detect methods जो आप वास्तव में क्या हासिल करना चाहते हैं प्रदान करता है:

arr = [12, 88, 107, 500] 
arr.find { |num| num > 100 } # => 107 

दोनों विधि के नाम एक दूसरे के पर्यायवाची शब्द एक ही हैं और वास्तव में करते हैं।

+0

+1, मैं पूरी तरह से 'ढूंढ', दुह के बारे में भूल गया। –

+0

आह! 'ढूंढ' वह तरीका था जिसे मैं याद रखने की कोशिश कर रहा था। मुझे मूर्खतापूर्ण, मैं 'ऐरे' के लिए दस्तावेज़ देख रहा था, न कि 'संख्यात्मक'। –

+4

रूबी दुनिया में भी 'पहचान' – tokland

4
arr[arr.index {|num| num > 100 }] #=> 107 
+0

यह अनुरोध नहीं किया गया था लेकिन मुझे क्या चाहिए, धन्यवाद !! – Gabber

1
arr.find{|el| el>100} #107 (or detect; it's in the Enumerable module.) 
संबंधित मुद्दे

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