如何将字符串数组转换为符号数组?

Gra*_*cko 29 ruby

我想将下面的字符串数组的元素转换为符号,并输出它们

strings = ["HTML", "CSS", "JavaScript", "Python", "Ruby"]
Run Code Online (Sandbox Code Playgroud)

看看我在做什么:

strings.each { |x| puts x.to_sym }
Run Code Online (Sandbox Code Playgroud)

没有成功.我究竟做错了什么?

ick*_*fay 46

使用map而不是each:

>> strings.map { |x| x.to_sym }
=> [:HTML, :CSS, :JavaScript, :Python, :Ruby]
Run Code Online (Sandbox Code Playgroud)

对于Ruby 1.8.7及更高版本或包含ActiveSupport,您可以使用以下语法:

>> strings.map &:to_sym
=> [:HTML, :CSS, :JavaScript, :Python, :Ruby]
Run Code Online (Sandbox Code Playgroud)

您的each方法似乎不起作用的原因是puts使用符号调用输出符号的字符串表示形式(即没有:).另外,你只是循环并输出东西; 你实际上并没有构建一个新的数组.


小智 26

清洁单行:

%w(HTML CSS JavaScript Python Ruby).map(&:to_sym)
Run Code Online (Sandbox Code Playgroud)

&tell参数应该被视为一个块,即构建数组并应用于to_sym每个元素.


Dan*_*G2k 9

我会做点什么的

strings.map! &:to_sym
Run Code Online (Sandbox Code Playgroud)