这些是Codecademy的指示:
我们有一个字符串数组,我们以后想用作哈希键,但我们宁愿它们是符号。创建一个新的数组符号。使用
.each
迭代字符串数组并将每个字符串转换为符号,将这些符号添加到符号中。
这是我写的代码(提供了strings
数组):
strings = ["HTML", "CSS", "JavaScript", "Python", "Ruby"]
symbols = []
strings.each { |x| x.to_sym }
symbols.push(strings)
我知道我可能做了很多错事,但是我已经完成了很多困难的红宝石赛道,所以我不确定为什么这个让我很难受。首先,它不是将字符串转换为符号,其次,它不是将它们推送到符号数组。
答案 0 :(得分: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
将遍历数组中的每个项目,并根据map函数将其转换为其他项目。对于刚刚应用函数的简单地图,您可以更进一步:
symbols = strings.map &:to_sym
(与symbols = strings.map(&:to_sym)
相同,请使用您认为更有品味的产品。)
答案 1 :(得分:1)
each
遍历strings
,将块应用于每个元素。但是,它不返回任何东西。您将要在块本身中添加symbols
数组:
strings.each { |x| symbols.push(x.to_sym) }
但是,您也可以在一行中生成符号数组:
symbols = strings.map { |x| x.to_sym }
答案 2 :(得分:1)
您可以将代码更改为以下内容:
strings.each do |x|
x = x.to_sym
symbols.push(x)
答案 3 :(得分:0)
strings = ["HTML", "CSS", "JavaScript", "Python", "Ruby"]
symbols = Array.new
strings.each do |x|
symbols.push(x.to_sym)
end
这应该是一个确切的答案..
答案 4 :(得分:0)
您必须在迭代字符串的每个值时存储新值,将其转换为符号然后重新调整值
<html>
<head>
<title>Rotate image</title>
<style type="text/css">
.rotate
{
transform:rotate(90deg);
}
</style>
</head>
<body>
<div>
<img src="http://placehold.it/70x70" height="200px" width="200px">
</div>
<div>
<img src="http://placehold.it/70x70" class="rotate" height="200px" width="200px">
</div>
</body>
</html>