2012-01-12 7 views
11

एक सरणी के लिए, जब मैं टाइप करें:Array.to_s ब्रैकेट वापस क्यों करता है?

puts array[0] 

==> text 

फिर भी जब मैं

puts array[0].to_s 

==> ["text"] 

क्यों कोष्ठक और उद्धरण टाइप? मैं क्या खो रहा हूँ?

परिशिष्ट: मेरे कोड इस

page = open(url) {|f| f.read } 
page_array = page.scan(/regex/) #pulls partial urls into an array 
partial_url = page_array[0].to_s 
full_url = base_url + partial_url #adds each partial url to a consistent base_url 
puts full_url 

की तरह लग रहा है कि मैं क्या की तरह दिखता हो रही है:

http://www.stackoverflow/["questions"] 
+2

क्या आपके 'array' में है बिना है? और आप किस रूबी संस्करण के बारे में बात कर रहे हैं (यहां 1.8 और 1.9 के बीच एक अंतर है) – Amadan

+0

हमें अपनी सरणी की परिभाषा दिखाएं –

+0

इसे अपने प्रश्न में रखें; यह गैरकानूनी है। –

उत्तर

2

आप हमें regex दिखाने के लिए वास्तव में ठीक से इसे ठीक करने की जरूरत है, लेकिन यह कर देगा यह:

इस

partial_url = page_array[0].to_s 
बदलें

इस

partial_url = page_array[0][0] 
+0

धन्यवाद! उसने ऐसा किया लेकिन आप सही हैं, यह एक रेगेक्स मुद्दा था। – user1144553

1

साथ यह आवश्यक रूप से को ठीक नहीं करता है क्यों आप एक दोगुनी-अप सरणी हो रही है, लेकिन आप इसे समतल और उसके बाद इस तरह पहला तत्व कॉल कर सकते हैं। इसलिए यदि आप [1,2,[3,[4,5,6]]] था और उस पर समतल बुलाया

page_array = page.scan(/regex/).flatten 

सपाट खड़ी सरणियों बाहर ले जाता है और एक स्तर बनाता है,, आप [1,2,3,4,5,6]

मिलेगा यह भी array[0][0] कर से अधिक मजबूत है, क्योंकि, अगर आप था पहले तत्व में घिरे दो से अधिक सरणी, आप एक ही मुद्दे में भाग लेंगे।

आईन सही है, फिर भी रेगेक्स को देखे बिना, हम मूल कारण से बाहर नहीं निकल सकते हैं।

12

to_s केवल ऐरे क्लास के निरीक्षण के लिए एक उपनाम है।

ऐसा नहीं है कि यह एक स्ट्रिंग को वापस करने के लिए array.to_s की अपेक्षा करने के बजाए बहुत कुछ है, यह वास्तव में सरणी लौटा रहा है। विधि के नाम पर आधारित, वास्तव में आप जो खोज रहे हैं वह वास्तव में नहीं है।

तुम सिर्फ "हिम्मत" कोशिश करना चाहते हैं:

page_array.join 

अगर वहाँ सरणी के लिए कई तत्व हैं:

यह कर देगा:

page_array = ["test","this","function"] 

वापसी:

"test this function" 

एक ऐरे रिटर्न पर "to_s" क्या है, ऊपर बताए गए रूबी के संस्करण पर निर्भर करता है। 1.9।एक्स रिटर्न:

"[\"test\"]" 
20

यह सरणी प्रिंट के रूप में कोष्ठक

array.join(", ") 

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

  • कोई संबंधित समस्या नहीं^_^