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

  • Bryan Smith

    Bryan Smith

    12 Mart 2006
  • Elefant Traks

    Elefant Trak

    5 HAZİRAN 2007
  • kndx

    kndx

    11 Mart 2006