2013-04-12 10 views
9

ये Codecademy के निर्देश दिए गए हैं "प्रतीकों और तार के बीच परिवर्तित":Codecademy गहरे लाल रंग का सबक

हम तार हम बाद में हैश कुंजी के रूप में उपयोग करना चाहते हैं की एक सरणी है, लेकिन हम नहीं बल्कि वे प्रतीकों होगी। एक नया सरणी, प्रतीक बनाएँ। स्ट्रिंग्स सरणी पर फिर से चलाने के लिए .each का उपयोग करें और प्रत्येक स्ट्रिंग को प्रतीक में परिवर्तित करें, उन प्रतीकों को प्रतीकों में जोड़ दें।

इस कोड को मैंने लिखा (strings सरणी प्रदान किया गया) है:

strings = ["HTML", "CSS", "JavaScript", "Python", "Ruby"] 
symbols = [] 
strings.each { |x| x.to_sym } 
symbols.push(strings) 

मैं जानता हूँ कि मैं शायद कई बात बिगड़ कर रहा हूँ, लेकिन मैं रूबी के माध्यम से मिल गया है अब तक के साथ इस ट्रैक बहुत कम कठिनाई, इसलिए मुझे यकीन नहीं है कि यह मुझे क्यों रोक रहा है। सबसे पहले, यह तारों को प्रतीकों में परिवर्तित नहीं कर रहा है, और दूसरी बात, यह उन्हें प्रतीक सरणी पर नहीं दबा रहा है।

+0

विधि आप देख रहे हैं 'map' है retun किया है। 'प्रतीकों = तारों। मैप {| str | str.to_sym} ' –

+0

@ राजेंद्र_Prasad कोड कोडिंग (बैकटिक्स) का उपयोग न करें जो कोड नहीं है। कोड स्वरूपण जोर देने या तकनीकी शर्तों को हाइलाइट करने के लिए नहीं है। – Gilles

+0

कोडेकैडमी सटीक नहीं है: आप स्ट्रिंग को 'to_sym' के साथ एक प्रतीक में परिवर्तित नहीं कर सकते हैं। आप क्या कर सकते हैं ([डॉक्टर] उद्धृत करना (http://ruby-doc.org/core-2.0/String।एचटीएमएल # विधि-i-to_sym)) प्रतीक से स्ट्रिंग को वापस करें, प्रतीक बनायें यदि यह पहले मौजूद नहीं था। स्ट्रिंग को छूटा नहीं जाता है। – steenslag

उत्तर

16

अकेले to_sym नहीं कर रहा था कुछ भी उपयोगी; यह स्ट्रिंग को परिवर्तित कर रहा था, लेकिन इसे कहीं भी संग्रहीत नहीं कर रहा था या बाद में इसका उपयोग नहीं कर रहा था। आप प्रतीक सरणी में जोड़ना चाहते हैं।

strings = ["HTML", "CSS", "JavaScript", "Python", "Ruby"] 
symbols = [] 
strings.each { |s| symbols.push s.to_sym } 

या अधिक सुंदर ढंग से, आप symbols = [] की स्थापना को छोड़ सकते हैं और सिर्फ map का उपयोग यह एक पंक्ति में बनाने के लिए:

symbols = strings.map { |s| s.to_sym } 

map सरणी में प्रत्येक आइटम के माध्यम से चलना और यह कुछ में बदलना होगा वरना अनुसार नक्शा समारोह में। और सरल नक्शे के लिए जहाँ आप सिर्फ एक समारोह लागू कर रहे हैं, आप इसमें कुछ एक कदम ले जा सकते हैं: (। यही कारण है कि symbols = strings.map(&:to_sym) की तरह ही है, उपयोग, जो भी आप अधिक स्वादिष्ट लगता है)

symbols = strings.map &:to_sym 

+0

धन्यवाद। मैं आपके शीर्ष उत्तर के साथ जा रहा हूं, क्योंकि मैंने अभी तक पाठों में 'मानचित्र' भर नहीं लिया है। – syzygy333

+0

धन्यवाद - एपीआई देखें, मानचित्र जैसे बहुत से साफ-सुथरे फ़ंक्शन हैं। http://www.ruby-doc.org/core-2.0/Enumerable.html – mahemoff

+0

दूसरे उदाहरण ने 'irb' का उपयोग करके एक प्रतीक सरणी बनाई, लेकिन सीए नहीं था। सीए ने केवल 1 उदाहरण की अनुमति दी। एक और उदाहरण 'तार' होगा। {{s | | symbols.push s.intern} ' – noobninja

1

eachstrings से अधिक है, प्रत्येक तत्व को ब्लॉक लागू करें। हालांकि, यह कुछ भी वापस नहीं करता है।

strings.each { |x| symbols.push(x.to_sym) } 

लेकिन, आप के रूप में अच्छी एक पंक्ति में एक प्रतीक सरणी उत्पन्न कर सकते हैं:: आप ब्लॉक अपने आप में symbols सरणी में जोड़ने के लिए चाहता हूँ

symbols = strings.map { |x| x.to_sym } 
0
strings = ["HTML", "CSS", "JavaScript", "Python", "Ruby"] 

symbols = Array.new 
strings.each do |x| 
    symbols.push(x.to_sym) 
end 

यह एक सटीक उत्तर होना चाहिए ..

1

आप निम्न करने के लिए अपने कोड बदल सकते हैं:

strings.each do |x| 
x = x.to_sym 
symbols.push(x) 
0

आप के रूप में आप स्ट्रिंग के प्रत्येक मान पुनरावृति नया मान, स्टोर यह एक प्रतीक में बदलने और फिर मान

strings = ["HTML", "CSS", "JavaScript", "Python", "Ruby"] 
symbols = [] 
strings.each do |s| 
    s = s.to_sym 
    symbols.push(s) 
end 
+0

मेरा उत्तर इस बात पर आधारित था कि कोड स्ट्रिंग्स को प्रतीक में क्यों परिवर्तित नहीं कर रहा था और बाद में कोडकैमी निर्देशों के आधार पर उन्हें प्रतीकों के सारणी पर धक्का नहीं दे रहा था और उस बिंदु पर सीखने वाले को दिए गए उदाहरण पाठ्यक्रम। –

+0

@ मैट कृपया, ध्यान में रखते हुए, सीखने वाले को कोडेकैमी पर अपने सीखने के ट्रैक के इस बिंदु पर .map से पेश नहीं किया गया था। –

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