से पहले अगले और तत्व को वापस लौटाना मैं प्रत्येक के साथ सरणी के दौरान सरणी से वर्तमान और पहले तत्व को कैसे प्राप्त कर सकता हूं।एक सरणी पर Iterate और वर्तमान
array.each do |a|
# I want to fetch next and before current element.
end
से पहले अगले और तत्व को वापस लौटाना मैं प्रत्येक के साथ सरणी के दौरान सरणी से वर्तमान और पहले तत्व को कैसे प्राप्त कर सकता हूं।एक सरणी पर Iterate और वर्तमान
array.each do |a|
# I want to fetch next and before current element.
end
लें देखो:
class Array
def each_with_prev_next &block
[nil, *self, nil].each_cons(3, &block)
end
end
#=> nil
array.each_with_prev_next do |prev, curr, nxt|
puts "prev: #{prev} curr: #{curr} next: #{nxt}"
end
'[nil] * array + [nil]' के बजाय '[nil, * array, nil]' के बारे में कैसे? –
ग्रेट! मुझे '+' संस्करण से नफरत है, लेकिन मैंने सोचा कि कुछ भी सुंदर नहीं है। यदि आपको कोई फर्क नहीं पड़ता तो मैं जवाब अपडेट कर दूंगा। –
यदि कोई व्यक्ति केवल उन पर पुनरावृत्ति करने के बजाय तत्वों को "मानचित्र" करने का कोई तरीका ढूंढ रहा है तो आप '1..9) .each_cons (2) .map {| a | ए} ' – equivalent8
आप Enumerable#each_with_index
उपयोग कर सकते हैं प्रत्येक तत्व के सूचकांक प्राप्त करने के लिए के रूप में आप पुनरावृति, और प्रयोग कि आसपास के आइटम प्राप्त करने। Enumerable#each_cons
विधि पर
array.each_with_index do |a, i|
prev_element = array[i-1] unless i == 0
next_element = array[i+1] unless i == array.size - 1
end
दो सवाल: 1) क्या "पिछला" है
आप चाहें, तो आप नई सरणी विधि में लपेट कर सकते हैं शुरुआत में तत्व और अंत में "अगला" तत्व? 2) क्या 'अगला' तत्व अगले पुनरावृत्ति का 'वर्तमान' तत्व होना चाहिए (यानी, समूह के बाद [ar [4], ar [5], ar [6]] ', क्या अगला समूह ' [आरआर [5], आर [6], आर [7]] 'या' [आरआर [7], आर [8], आर [9]] ')? – Chuck