2012-08-23 8 views
5

कृपया कोई बता सकता है कि 2..-1 का एक श्रेणी ऑब्जेक्ट क्या है।2 की सीमा क्या है ..- 1 मतलब है? (रूबी कोन्स about_arrays.rb)

रूबी koans about_arrays.rb में निम्नलिखित है:

def test_slicing_with_ranges 
    array = [:peanut, :butter, :and, :jelly] 

    assert_equal [:peanut, :butter, :and], array[0..2] 
    assert_equal [:peanut, :butter], array[0...2] 
    assert_equal [:and, :jelly], array[2..-1] 
end 

निम्नलिखित वेबसाइट (एक और उत्तर से पाया जाता है) बताते हैं कि कैसे पर्वतमाला टुकड़ा करने की क्रिया के साथ काम: Gary Wright, string/array slices इस से, मैं समझता हूँ कि क्यों विभाजन देता है जवाब है यह करता है। जिस चीज को मैं समझ नहीं पा रहा हूं वह है कि रेंज ऑब्जेक्ट का क्या मतलब है। एक सामान्य श्रेणी के लिए, मैं कर सकते हैं:

(1..3).each { |x| puts(x) } 

जो निम्नलिखित उत्पादन जब आईआरबी में मार डाला देता है:

1 
2 
3 
=> 1..3e 

हालांकि, (2..-1).each { |x| puts(x) } देता है:

=> 2..-1 

तो क्या रेंज करता है (2..-1) मतलब है?

उत्तर

11

एक नकारात्मक सूचकांक का अर्थ है "सरणी के अंत से गिनती।" तो -1 सरणी में अंतिम आइटम है। 2..-1 का मतलब तीसरे आइटम से आखिरी तक है।

+0

धन्यवाद @ ड्रैगूनवाइथ। शायद मैं सीमा वस्तु के बारे में गलत तरीके से सोच रहा हूं। आपके उत्तर से, इसकी श्रेणी 2 (तीसरी वस्तु) की शुरूआत और -1 (अंतिम वस्तु) का अंत है। मुझे लगता है कि मुझे भ्रमित करने का क्या मतलब है विभाजन के संदर्भ के बाहर इसका क्या अर्थ है: 2 और -1 के बीच 'संख्या' क्या हैं; क्यों नहीं ('..- 1)। कुछ भी प्रिंट करें? – Will

+0

@Will: आपके सरणी में केवल तीन आइटम हैं, इसलिए '2' और अंतिम के बीच में कुछ भी नहीं है; '2' * * आखिरी है। यही कारण है कि आप कुछ भी नहीं देख रहे हैं। यदि आप एक बड़ी सरणी के साथ प्रयास करते हैं, तो आपको चीजों को देखना चाहिए। – KRyan

+1

"2 और -1" के बीच "क्या संख्याएं हैं" - कोई नहीं। "क्यों नहीं (2 ..- 1)। प्रत्येक प्रिंट कुछ भी?" - यही कारण है कि ;-) –

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