219

「to_a」メソッドを使用して同等の配列に変換される範囲の例を示す本を読んでいます

irb でコードを実行すると、次の警告が表示されます

 warning: default `to_a' will be obsolete

to_a を使用する代わりの正しい方法は何ですか?

配列に範囲を設定する別の方法はありますか?

4

6 に答える 6

390

splat を使用して、範囲を指定して配列を作成できます。

>> a=*(1..10)
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Kernel Arrayメソッドを使用して、

Array (1..10)
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

または to_a を使用して

(1..10).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
于 2011-07-05T18:22:15.647 に答える
82

これはirbで私のために働きます:

irb> (1..4).to_a
=> [1, 2, 3, 4]

私はそれに気づきます:

irb> 1..4.to_a
(irb):1: warning: default `to_a' will be obsolete
ArgumentError: bad value for range
        from (irb):1

おそらく、括弧がありませんか?

(Ruby 1.8.6 パッチレベル 114 を実行しています)

于 2008-10-10T13:49:55.297 に答える
36

あなたがこれをやっているように聞こえます:

0..10.to_a

警告は、Range#to_a からではなく、Fixnum#to_a からのものです。代わりにこれを試してください:

(0..10).to_a
于 2008-10-10T13:52:40.847 に答える
10

これをチェックして:

a = [*(1..10), :top, *10.downto( 1 )]
于 2013-06-12T04:25:55.383 に答える