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} |
号
这是一种不用地图就能做到的方法。