2012-09-10 16 views
6

[1..5] == [1,2,3,4,5] क्यों नहीं है?क्यों नहीं [1..5] == [1,2,3,4,5] है?

[1..5].to_a == [1,2,3,4,5] क्यों नहीं है?

[1..5] से [1,2,3,4,5] से कैसे परिवर्तित करें?

+1

'[1..5]' '[(1..5)]' (एक रेंज ऑब्जेक्ट युक्त एक ऐरे) जैसा ही है। 'निरीक्षण' बहुत उपयोगी नहीं है अगर यह समझा नहीं गया है, लेकिन आरईपीएल पर '[1..5] [0]' कोशिश करें जो चीजों को साफ़ करना चाहिए। –

+4

'[* 1..5] 'के साथ सीमा का विस्तार करें –

उत्तर

18

[1..5] एक सरणी जो केवल एक ही तत्व, रेंज वस्तु है 1..5

[1..5].to_a अभी भी [1..5]

है[1,2,3,4,5]

2

[1..5] एक तत्व के साथ एक सरणी है - एक श्रेणी वस्तु, इसके माध्यम से पुनरावृत्त करने के सभी प्रयास विफल हो जाएंगे। सरणी में उनमें कई प्रकार की वस्तुएं हो सकती हैं। ऊपर दिए गए मेरे उदाहरण में मैं सीमा को केवल एक सीमा के रूप में मानता हूं और सीधे से कोई सरणी बना देता हूं।

1.9.3-p125 :008 > (1..5).to_a # Note regular parens. 
=> [1, 2, 3, 4, 5] 
1.9.3-p125 :009 > 

अधिक करने के लिए बारीकी तुम क्या कहा गया है - [1..5] के साथ शुरू - तुम कर सकते हो:

1.9.3-p125 :013 > newarray = [] 

1.9.3-p125 :014 > [1..5][0].each {|e| newarray << e} 
=> 1..5 
1.9.3-p125 :015 > newarray 
=> [1, 2, 3, 4, 5] 
1.9.3-p125 :016 >