2

有没有办法使用 ruby​​ 的 % 符号创建一个 Fixnums 数组?

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

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

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

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

%w(array) 是什么意思?

红宝石中的 %w “东西”是什么?

Ruby 编程语法 - % 表示法

4

5 回答 5

4

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

digits = %w{1 2 3 4 5 6 7 8 9 10}.map(&:to_i)
于 2011-10-04T19:09:27.940 回答
2

% 符号专门用于字符串,因此与您给出的示例相比,这不会帮助您更接近。

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

(1..10).to_a
于 2011-10-04T19:11:01.473 回答
2

我错过了什么或没有

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

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

不做吗?

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

于 2011-10-04T19:59:23.057 回答
0
Array.new(10) {|i| i}

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

于 2011-10-04T19:09:44.043 回答
0

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

于 2011-10-04T22:07:51.523 回答