2015-10-27 102 views
1

這是來自Codecademy的課程,我知道人們已經在這裏詢問了它,但我想特別看看我的解決方案出了什麼問題。以下是他們開始你解決:將字符串轉換爲符號並將它們轉換爲數組

strings = ["HTML", "CSS", "JavaScript", "Python", "Ruby"] 

# Add your code below! 

下面是說明:

我們有我們希望以後作爲哈希鍵使用字符串數組,但我們寧願他們是符號。

創建一個新變量,符號,並在其中存儲一個空數組。使用 。每個遍歷字符串數組。對於字符串中的每個s,使用 .to_sym將s轉換爲符號並使用.push將新符號 添加到符號。

我很抱歉,因爲格式沒有複製過來,但你明白了。
這裏是我的解決方案:

strings = ["HTML", "CSS", "JavaScript", "Python", "Ruby"] 

# Add your code below! 

symbols = [] 
strings.each do |s| 
    s.to_sym 
    symbols.push(s) 
end 

遞交本,我感到我沒有正確的字符串轉換爲符號的錯誤。

回答

4

您創建的字符串s指向一個新的符號,但你不改變S(它仍然是一個字符串),你不使用新的符號。相反,你的循環應該包含代碼

symbols.push(s.to_sym) 

注意的問題,您需要使用。每次,所以答案提示.MAP是錯誤的,即使它的實施同樣的事情的一個更好的辦法。

+0

簡短,內容翔實,相關。這就是我一直在尋找的,謝謝你。 –

+0

更進一步,你可以這樣做:symbols = strings.collect(&:to_sym) – Mircea

+0

Collect和map是一回事。這個問題也不允許。 – cliffordheath

0

可以映射,並將其存放到類似指令的新變量建議:

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

編輯:

s.to_sym返回一個符號,但是你是不是在任何地方存放或保存更改,所以是一種非破壞性的方法。相反,您應在push在返回的語句中,因此您使用s.to_sym作爲參數被推入您的新數組symbols。當調用symbols數組時,它現在應該包含所有以前翻譯成符號的字符串。

strings.each {|s| symbols.push(s.to_sym) } 
+0

無法在指令中建議您使用.map語法。我很感激幫助,但是如何解決我已有的代碼? –

+0

啊我的不好。我認爲它是什麼被返回的問題。我將很快編輯我的帖子 –

0

s.to_sym會將它轉換爲符號,但s仍然是一個字符串。您沒有將其重新分配到s,如s = s.to_syms.to_sym!。所以你基本上推動s字符串而不是符號。

0
strings = ["HTML", "CSS", "JavaScript", "Python", "Ruby"] 
symbols=[] 
strings.each do |word| 
    word.downcase! 
    if word.include? "s" 
    symbols.push("s".to_sym) 
    end 
end 
print symbols 
+0

這將返回[:s,:s]零到控制檯 – JanieSG

+0

但Ruby仍然不喜歡它 - 不知道爲什麼? – JanieSG

+0

我無法確定這是否應該是答案,但評論顯示它尚未完成。如果還有其他問題,請點擊[提問](http://stackoverflow.com/questions/ask)按鈕;您可能希望在上下文中包含此鏈接。或者,一旦你獲得更多的代表,[你將可以發表評論](http://stackoverflow.com/privileges/comment)。在此之前,請不要將答案用作解決方法。 –