SORU
19 Temmuz 2011, Salı


Ruby Metaprogramming: dinamik örnek değişken isimleri

Hadi şu esrar var ki:

{ :foo => 'bar', :baz => 'qux' }

Nasıl dinamik olarak anahtarları ve değerleri bir nesnenin örnek değişkenleri olmak için ayarlanmış olabilir

class Example
  def initialize( hash )
    ... magic happens here...
  end
end

... bu yüzden bu model içinde aşağıdaki ile son buldu

@foo = 'bar'
@baz = 'qux'

?

CEVAP
19 Temmuz 2011, Salı


Aradığın yöntemi instance_variable_set. Yani:

hash.each { |name, value| instance_variable_set(name, value) }

Ya da daha kısaca

hash.each &method(:instance_variable_set)

Eğer örnek değişken isimleri eksik "@ onları eklemek gerekir, daha fazla gibi olur: "OP örnekte olduğu gibi),

hash.each { |name, value| instance_variable_set("@#{name}", value) }

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Absolute Zero(Programming Tutorials)

    Absolute Zer

    22 Kasım 2012
  • Phymec

    Phymec

    18 Temmuz 2009
  • the one am radio

    the one am r

    6 Mayıs 2006