私はこの方法で配列を初期化します:
array = Array.new
array << '1' << '2' << '3'
それを1つのステップで行うことは可能ですか?もしそうなら、どうですか?
array = Array.new << 1 << 2 << 3
;)
1
があり'1'
ます。
私はこの方法で配列を初期化します:
array = Array.new
array << '1' << '2' << '3'
それを1つのステップで行うことは可能ですか?もしそうなら、どうですか?
array = Array.new << 1 << 2 << 3
;)
1
があり'1'
ます。
回答:
配列リテラルを使用できます:
array = [ '1', '2', '3' ]
範囲を使用することもできます。
array = ('1'..'3').to_a # parentheses are required
# or
array = *('1'..'3') # parentheses not required, but included for clarity
空白で区切られた文字列の配列の場合、パーセント文字列構文を使用できます。
array = %w[ 1 2 3 ]
ブロックを渡して、Array.new
各エントリの値を決定することもできます。
array = Array.new(3) { |i| (i+1).to_s }
最後に、上記の他の回答と同じ3つの文字列の配列は生成しませんが、Ruby 1.8.7以降で列挙子を使用して配列を作成できることにも注意してください。例えば:
array = 1.step(17,3).to_a
#=> [1, 4, 7, 10, 13, 16]
to_a
([*'1'..'3']
)を好んでいますが、詳細な回答には1つ。
Array[ "1","2","3"] #=> ["1","2","3"]
(このメソッドは配列リテラルコンストラクターとは関係ないと思います)。トップレベルのKernel#Arrayを使用することもできます(メソッド名はクラス名のように見えます)Array(1..5) #=> [1,2,3,4,5]
一発ギャグ:
array = [] << 1 << 2 << 3 #this is for fixnums.
または
a = %w| 1 2 3 4 5 |
または
a = [*'1'..'3']
または
a = Array.new(3, '1')
または
a = Array[*'1'..'3']
[1,2,3]
初期化するのではなく、徐々に増やしていくためだと思います。また、あなたはより多くのキャラクターです。また、OPが文字列の配列について尋ねていたのに対して、Fixnumの配列を作成しました。
上記の回答に加えて、あなたもこれを行うことができます
=> [*'1'.."5"] #remember *
=> ["1", "2", "3", "4", "5"]
>> [*?1..?5] #=> ["1", "2", "3", "4", "5"]
。
できるよ
array = ['1', '2', '3']
他の人が指摘したように、次のように%w表記で配列を初期化することもできます。
array = %w(1 2 3)
または
array = %w[1 2 3]
どちらの場合も、各要素は整数ではなく文字列であることに注意してください。したがって、要素が整数である配列が必要な場合は、各要素をアポストロフィでラップしないでください。
array_of_integers = [1, 2, 3]
また、要素間にコンマを挿入する必要はありません(これは、この%w表記なしで配列を作成する場合に必要です)。あなたがこれをするなら(私はしばしば間違ってそれをしました)、次のように:
wrong_array = %w(1, 2, 3)
その要素は3つの文字列になります----「1」、「2」、「3」。だからあなたがするなら:
puts wrong_array
出力は次のようになります。
1,
2,
3
=>nil
これは私たちがここで望むものではありません。
これがポイントを明確にするのに役立つことを願っています!
%w
ルビ配列の表記法でこれを簡単に行うことができます。
array = %w(1 2 3)
配列の値1、2、3を配列に追加し、出力を次のように出力します。 ["1", "2", "3"]