0

我有一BankAccount堂课。我试图创建这个类的多个实例并将它们放入一个数组中。例如

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

我想用里面的大量实例初始化数组,比如说 20,所以 fromBa1Ba20. 有没有比手动输入更简单的方法呢?我尝试了一个循环,但我只是不知道如何使它工作。

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)") }

现在应该将B1through设置为适当的 BankAccount 实例。B100

免责声明:我应该说这种方法通常会不受欢迎。在这种情况下,您已经有一个名为 accounts 的数组。您需要做的就是对其进行索引以获取相应的银行帐户。 accounts[50]例如,而不是Ba50. 在我多年的 ruby​​ 开发中,我发现很少有地方使用 eval 是有意义的。

于 2013-01-29T07:52:00.557 回答