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

Is there a %w{ }--like way to create array of fixnums in Ruby?

有没有办法用Ruby的%表示法创建一个FixNum数组?

很明显,写起来很简单,例如[编辑:将示例改为非连续数字]

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

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

但是它让我很烦,我想知道如果没有地图,是否有办法做到这一点。这些消息都没有提到这种可能性——我是不是走运了?

%w(数组)是什么意思?

Ruby中的%w"thing"是什么?

Ruby编程语法-百分比符号


由于%表示法似乎是处理Ruby继承的"bastard"Perl字符串之一,我强烈怀疑它,但是您可以通过

1
digits = %w{1 2 3 4 5 6 7 8 9 10}.map(&:to_i)


我是在找什么东西还是在做什么?

1
2
3
digits = [4, 8, 15, 16, 23, 42]

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

不是吗?

数字的最佳选择,顺便说一句:


%表示法专门针对字符串,因此这不会帮助您比给出的示例更接近。

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

1
(1..10).to_a


您可以编辑parse.y,它将源代码转换为ruby,然后重新编译ruby。我自己从来没有编辑过parse.y,但在rubykaigi2011上有一个有趣而精彩的演讲。


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

这是一种不用地图就能做到的方法。