我有一BankAccount
堂课。我试图创建这个类的多个实例并将它们放入一个数组中。例如
accounts = [Ba1 = BankAccount.new(100), Ba2 = BankAccount.new(100)]
我想用里面的大量实例初始化数组,比如说 20,所以 fromBa1
到Ba20
. 有没有比手动输入更简单的方法呢?我尝试了一个循环,但我只是不知道如何使它工作。
这应该可以解决问题:
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
through设置为适当的 BankAccount 实例。B100
免责声明:我应该说这种方法通常会不受欢迎。在这种情况下,您已经有一个名为 accounts 的数组。您需要做的就是对其进行索引以获取相应的银行帐户。 accounts[50]
例如,而不是Ba50
. 在我多年的 ruby 开发中,我发现很少有地方使用 eval 是有意义的。