0

問題!

メソッドを介して配列を仮想オブジェクトに転送できるかどうか疑問に思いました。2つのプロパティ「@name」と「@lastname」を持つクラス「Person」があり、この情報を含む配列があるとします。したがって、必要なのは、各配列アイテムを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

どんな助けでも大歓迎です

〜EderQuiñones

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 に答える