【问题标题】:Create and initialize instances of a class with sequential names创建并初始化具有顺序名称的类的实例
【发布时间】:2013-01-29 07:47:40
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby arrays


    【解决方案1】:

    这应该可以解决问题:

    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 是有意义的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-27
      • 2011-10-08
      • 2019-05-21
      • 2011-10-20
      • 1970-01-01
      相关资源
      最近更新 更多