0

问题!

我想知道是否可以通过方法将数组转换为虚拟对象。假设我有一个类“Person”,它有两个属性“@name”和“@lastname”,然后我有一个包含此信息的数组,所以我需要将每个数组项传递给 Person 类的新对象。

例子 #

class Person
  attr_accessor :name, :lastname
  def initialize(name = "", lastname = "")
    @name = name
    @lastname = lastname
  end
end

array_of_names = [["lucia", "germes"], ["eder", "quiñones"], ["pedro", "infante"]]
array_of_names.each_with_index do |item, index|
  virtual_object = item.to_vo(Person.new)
  virtual_object.inspect
  # => "#<Person:0x0000FF @name="eder" @lastname="quiñones">
end

问题?

这甚至可以通过扩展 Array 的类来实现吗?

class Array
  def to_vo(object)
    # ...
    # ...
    # ...
  end
end

任何帮助将不胜感激

~ 埃德奎尼诺斯

4

1 回答 1

3

是的

class Array
  def to_vo klass
    klass.new *self
  end
  # ..OR..
  def to_person
    Person.new *self
  end
end

p a.map { |e| e.to_vo Person }
p a.map(&:to_person)
于 2011-05-31T01:06:27.653 回答