是否有%w {} - 类似于在Ruby中创建fixnums数组的方法?

时间:2011-10-04 18:59:43

标签: ruby arrays notation

有没有办法使用ruby的%表示法创建Fixnums数组?

编写显然非常简单,例如[编辑:将示例更改为非连续数字]

digits = %w{4 8 15 16 23 42}.map{|d| d.to_i}

=> [4, 8, 15, 16, 23, 42]

但它让我烦恼,我想知道是否有办法在没有地图的情况下做到这一点。 这些消息来源都没有提到这种可能性 - 我运气不好吗?

What does %w(array) mean?

What is the %w "thing" in ruby?

Ruby Programming Syntax - the % notation

5 个答案:

答案 0 :(得分:4)

由于%符号似乎是Ruby中的“混蛋”Perl字符串处理继承之一,我强烈怀疑它,但你可以通过

保存几个字符
digits = %w{1 2 3 4 5 6 7 8 9 10}.map(&:to_i)

答案 1 :(得分:2)

%符号是专门针对字符串的,所以这不会帮助你比你给出的例子更接近。

如果您关心的整数是连续的,则可以使用Range对象:

(1..10).to_a

答案 2 :(得分:2)

我错过了什么或做了

digits = [4, 8, 15, 16, 23, 42]

=> [4, 8, 15, 16, 23, 42]

没有吗?

优秀的数字选择,顺便说一句:)

答案 3 :(得分:0)

Array.new(10) {|i| i}

这是一种没有地图的方式。

答案 4 :(得分:0)

您可以编辑parse.y,将源代码转换为Ruby,然后重新编译Ruby。我自己从来没有编辑过parse.y,但是在RubyKaigi2011这里有一个很有趣的awesome talk