【问题标题】:Organize my array ruby整理我的数组 ruby
【发布时间】:2013-10-14 11:50:28
【问题描述】:

我试图尽可能优化我的代码,但我已经走到了死胡同。

我的代码如下所示:

class Person
  attr_accessor :age
  def initialize(age)
    @age = age
  end
end

people = [Person.new(10), Person.new(20), Person.new(30)]

newperson1 = [Person.new(10)]
newperson2 = [Person.new(20)]
newperson3 = [Person.new(30)]

有没有办法让 ruby​​ 自动从人员数组中提取数据并将它们命名为以下 newperson1 等等..

最好的问候

【问题讨论】:

  • 您为什么要这样做?只需从数组中使用它们。或者使用“newperson”+索引的键创建一个哈希。
  • 我对 ruby​​ 很陌生,正如我所说,我正在尝试优化我的代码。你可以为这个例子举一个使用哈希的例子吗
  • 如果你有一个集合,使用它的最佳方式是作为一个集合,而不是拉出单独的变量。这不太可能是优化。如果您想要的是能够为每个项目提供一个标识符,那么哈希可能是一个好方法。怎么做,看sawa的例子,但不是使用绑定设置局部变量,而是先创建一个哈希myhash = {},然后再做myhash["newperson#{1}"] = person
  • 在您上面的代码中,您实际上创建了 6 个 Person 对象和 4 个数组,仅供参考。

标签: ruby arrays class


【解决方案1】:

我认为这就是你想要做的......

newperson1 = people[0]
puts newperson1.age

10 的输出符合预期。

【讨论】:

    【解决方案2】:

    这绝对是一种代码味道。您应该将它们称为[people[0]][people[1]]、...。

    但如果你坚持这样做,并且如果你可以等到 12 月 25 日(Ruby 2.1),那么你可以这样做:

    people.each.with_index(1) do |person, i|
      binding.local_variable_set("newperson#{i}", [person])
    end
    

    【讨论】:

      猜你喜欢
      • 2013-03-24
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多