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

这些是Codecademy的说明:

We have an array of strings we’d like to later use as hash keys,but we’d rather they be symbols. Create a new array,symbols. Use .each to iterate over the strings array and convert each string to a symbol,adding those symbols to symbols.

这是我写的代码(提供了字符串数组):

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

我知道我可能做了多件事情,但是我已经通过了这个很远的ruby轨道,很少有困难,所以我不知道为什么这是一个令我失望的事情.首先,它不是将字符串转换为符号,其次,它不是将它们推送到符号数组.

解决方法

to_sym一个人没有做任何有用的事情;它正在转换字符串,但不存储在任何地方或稍后使用它.你想继续添加到符号数组.
strings = ["HTML","Ruby"]
symbols = []
strings.each { |s| symbols.push s.to_sym }

或者更优雅的是,您可以跳过设置符号= [],只需使用地图即可在一行中创建它:

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

地图将遍历数组中的每个项目,并根据地图函数将其转换为其他内容.对于简单应用功能的简单地图,您可以进一步了解:

symbols = strings.map &:to_sym

(这与symbols = strings.map(&:to_sym)相同,使用您觉得更有品位的人.)

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...