有没有办法使用 ruby 的 % 符号创建一个 Fixnums 数组?
写起来显然很简单,例如[编辑:将示例更改为非连续数字]
digits = %w{4 8 15 16 23 42}.map{|d| d.to_i}
=> [4, 8, 15, 16, 23, 42]
但这让我很烦恼,我想知道是否有办法在没有地图的情况下做到这一点。这些消息来源都没有提到这种可能性——我不走运吗?
有没有办法使用 ruby 的 % 符号创建一个 Fixnums 数组?
写起来显然很简单,例如[编辑:将示例更改为非连续数字]
digits = %w{4 8 15 16 23 42}.map{|d| d.to_i}
=> [4, 8, 15, 16, 23, 42]
但这让我很烦恼,我想知道是否有办法在没有地图的情况下做到这一点。这些消息来源都没有提到这种可能性——我不走运吗?
由于 % 符号似乎是 Ruby 中处理继承的“混蛋” Perl 字符串之一,我强烈怀疑它,但您可以通过以下方式保存几个字符
digits = %w{1 2 3 4 5 6 7 8 9 10}.map(&:to_i)
% 符号专门用于字符串,因此与您给出的示例相比,这不会帮助您更接近。
如果您关心的整数是连续的,您可以使用 Range 对象:
(1..10).to_a
我错过了什么或没有
digits = [4, 8, 15, 16, 23, 42]
=> [4, 8, 15, 16, 23, 42]
不做吗?
数字的绝佳选择,顺便说一句:)
Array.new(10) {|i| i}
这是一种没有地图的方式。
您可以编辑 parse.y,它将源代码转换为 Ruby,然后重新编译 Ruby。我自己从未编辑过 parse.y,但在 RubyKaigi2011 上有一个有趣而精彩的演讲。