使用顺序名称创建和初始化类的实例

时间:2013-01-29 07:47:40

标签: ruby arrays

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

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

我想初始化内部有大量实例的数组,比方说20,所以从Ba1Ba20。有没有更简单的方法来做而不只是手动输入它?我尝试了一个循环,但我无法弄清楚如何使它工作。

1 个答案:

答案 0 :(得分: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)") }

现在应将B1B100设置为相应的BankAccount实例。

声明: 我应该说这种做法一般都不赞成。在这种情况下,您已经有一个名为accounts的数组。您需要做的只是索引它以获得相应的银行帐户。例如accounts[50]代替Ba50。在我多年的ruby开发过程中,我发现很少有地方可以使用eval。