6

a13 つの新しい配列 ( 、a2、 )を宣言する場合はa3、次のようにします。

a1=[]
a2=[]
a3=[]

しかし今、私はすべてを1行でやりたいのです。

a1, a2, a3 = []

しかし、これは失敗します。それらすべてを1行の空の配列に割り当てるにはどうすればよいですか?

4

7 に答える 7

19

2 番目の例と同様のことを行うには、3 つの配列を作成する必要があります。

a1, a2, a3 = [], [], []
于 2013-01-19T01:52:01.350 に答える
5

[]リテラルを繰り返さないことを主張する場合、1つの方法は次のとおりです。

a1, a2, a3 = Array.new(3){[]}

別の方法は次のとおりです。

a1 = (a2 = (a3 = []).dup).dup
于 2013-01-19T02:02:11.987 に答える
4

Andrew Marshall が指摘したように、 1 つの値を複数のオブジェクトに割り当てるさらに短い方法がもう1 つあります。

a1, a2, a3 = [42] * 3
于 2015-10-16T18:34:53.647 に答える
3

以下の状況では、Ruby の複数代入は想定外です。

a1, a2, a3 = []

上記のコードは、配列変数に空の配列を割り当てません。

使用する、

a1, a2, a3 = [], [], []

初期化に使用される変数の数として、値の数を指定する必要があります。

于 2013-01-19T07:19:33.473 に答える
3

これらの回答は過剰に設計されてArrayおり、OP のサンプルでの誤解を招くような使用に焦点を当てています。

a1 = a2 = a3 = []
# => []

結果をテストする

a1
# => []
a2
# => []
a3
# => []
a4 # for sake of comparison
NameError: undefined local variable or method `a4' for main:Object
于 2016-04-29T21:01:13.130 に答える
0

次のこともできます。

a1=[]; a2=[]; a3=[]
于 2015-02-15T18:39:42.790 に答える