将字符串转换为符号和" .push"将它们转换为数组

时间:2015-10-27 23:17:12

标签: arrays ruby string type-conversion symbols

这是来自Codecademy课程,我知道人们已经在这里询问过这个问题,但我想知道我的解决方案有什么问题。以下是他们开始使用的内容:

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

# Add your code below!

以下是说明:

  

我们有一系列字符串,我们希望稍后将其用作哈希键,但我们更确切地说它们是符号。

     

创建一个新变量,符号,并在其中存储一个空数组。使用   .each迭代字符串数组。对于字符串中的每个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 个答案:

答案 0 :(得分:4)

您可以从指向的字符串创建一个新符号,但不要更改s(它仍然是一个字符串),并且不使用新符号。相反,你的循环应该包含代码

symbols.push(s.to_sym)

请注意,这个问题要求你使用.each,所以答案暗示.map是错误的,即使这是实现同样事情的更好方法。

答案 1 :(得分: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) }

答案 2 :(得分:0)

s.to_sym会将其转换为符号,但s仍为字符串。您没有将其再次分配给ss = s.to_sym s.to_sym!。所以你基本上推了s字符串而不是符号。

答案 3 :(得分: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