Codecademy“在符号和字符串之间转换”ruby课程

时间:2013-04-12 12:24:57

标签: ruby string symbols

这些是Codecademy的指示:

  

我们有一个字符串数组,我们以后想用作哈希键,但我们宁愿它们是符号。创建一个新的数组符号。使用.each迭代字符串数组并将每个字符串转换为符号,将这些符号添加到符号中。

这是我写的代码(提供了strings数组):

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

我知道我可能做了很多错事,但是我已经完成了很多困难的红宝石赛道,所以我不确定为什么这个让我很难受。首先,它不是将字符串转换为符号,其次,它不是将它们推送到符号数组。

5 个答案:

答案 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>