2015-10-27 74 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)。在此之前,请不要将答案用作解决方法。 –