0

BankAccountクラスがあります。このクラスの複数のインスタンスを作成して配列に入れようとしていました。例えば

accounts = [Ba1 = BankAccount.new(100), Ba2 = BankAccount.new(100)]

内部に多数のインスタンスがある配列を初期化したい、たとえば 20 としましょBa1Ba20。手動で入力する代わりに、簡単に行う方法はありますか? ループを試してみましたが、それを機能させる方法がわかりません。

4

1 に答える 1

4

これでうまくいくはずです:

accounts = 100.times.collect { BankAccount.new(100) }

アカウントごとに異なることを行う必要がある場合は、次のようにします。

accounts = 100.times.collect { |i| BankAccount.new(i) }

i反復されるコレクション内の各数値を表します。

実際にデータを使用して変数名を設定する必要がある場合は、eval().

accounts = 100.times.collect { |i| eval("B#{i} = BankAccount.new(100)") }

次に、適切な BankAccount インスタンスに設定する必要がありB1ます。B100

免責事項:このアプローチは一般的に嫌われていると言わざるを得ません。この場合、すでに accounts という配列があります。対応する銀行口座を取得するためにインデックスを作成するだけです。 accounts[50]たとえば、の代わりにBa50。何年にもわたる Ruby 開発の中で、意味のある eval を使用する場所はほとんど見つかりませんでした。

于 2013-01-29T07:52:00.557 に答える