有没有办法使用ruby的%表示法创建Fixnums数组?
编写显然非常简单,例如[编辑:将示例更改为非连续数字]
digits = %w{4 8 15 16 23 42}.map{|d| d.to_i}
=> [4, 8, 15, 16, 23, 42]
但它让我烦恼,我想知道是否有办法在没有地图的情况下做到这一点。 这些消息来源都没有提到这种可能性 - 我运气不好吗?
答案 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。