我有一个BankAccount
课程。我试图创建这个类的多个实例并将它们放入一个数组中。例如
accounts = [Ba1 = BankAccount.new(100), Ba2 = BankAccount.new(100)]
我想初始化内部有大量实例的数组,比方说20,所以从Ba1
到Ba20
。有没有更简单的方法来做而不只是手动输入它?我尝试了一个循环,但我无法弄清楚如何使它工作。
答案 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)") }
现在应将B1
到B100
设置为相应的BankAccount实例。
声明:
我应该说这种做法一般都不赞成。在这种情况下,您已经有一个名为accounts的数组。您需要做的只是索引它以获得相应的银行帐户。例如accounts[50]
代替Ba50
。在我多年的ruby开发过程中,我发现很少有地方可以使用eval。