1

という名前の配列がある場合:

test_1
test_2

1そして、またはのいずれかを保持できる変数があります2。すなわち。id、idに値が1ある場合、この場合にその配列に何かを追加するにはどうすればよいですか:

test_#{id} << "value" #-> Where id is 1

次のように実行する必要があります。

test_1 << "value"

アップデート :

test_1 と test_2 はローカル変数です。

test_1 = []
test_2 = []

id = 1

これを行う方法 :

test_id id は id の値です

4

2 に答える 2

3

ローカル変数を使用すると、次のように実行できます。

test_1 = []
test_2 = []
eval("test_#{id}") << "value"

インスタンス変数を使用すると、わずかに改善できます。

@test_1 = []
@test_2 = []
instance_variable_get("@test_#{id}") << "value"

しかし、このケースを処理するより良い方法はid、 をキーとしてハッシュを使用することです。

test = {1 => [], 2 => []}
test[id] << "value"
于 2013-02-22T09:52:03.397 に答える
3

これらのケースでは、Hash代わりに使用する必要があります。

results = {}
results['test_1'] = []
results['test_2'] = []

# If we sure that id is in [1,2]. Otherwise we need add check here, or change `results` definition to allow unexisting cases. 
results["test_#{id}"] << 'value'
于 2013-02-22T09:52:36.157 に答える