SORU
2 Temmuz 2009, PERŞEMBE


Onun adı verilen bir örnek değişkeni değerini almak

Genel olarak, nasıl bir dize içinde var olan bir nesne için bir referans alabilir miyim?

Daha spesifik olarak, parametre isim listesi (onlara bakın edemem yani üye değişken yapılı dinamik olarak doğrudan) var.
Her parametre de from_s bir yöntem olan bir nesnedir.
Aşağıdaki (tabii ki işe yaramıyor...) gibi bir şey yapmak istiyorum:

define_method(:from_s) do | arg |
    @ordered_parameter_names.each do | param |
        instance_eval "field_ref = @#{param}"
        field_ref.from_s(param)
    end
end

CEVAP
3 Temmuz 2009, Cuma


Bunu başarmak için en deyimsel bir şekilde

some_object.instance_variable_get("@#{name}")

kullanmaya gerek yoktur ya da intern; Ruby gayet iyi idare edecektir. Eğer başka bir nesnenin içine kendine ulaşan ve ıvar çekerek bulursanız, ancak, saklama ayrılmış oldukça iyi bir şans var.

Eğer açıkça bir ıvar erişmek istiyorsanız, bunu yapmak için doğru şey onu bir erişimci. Aşağıdakileri göz önünde bulundurun:

class Computer
  def new(cpus)
    @cpus = cpus
  end
end

Eğer Bilgisayar yaptı, bu durumda,.yeni instance_variable_get @cpus at almak için kullanmak zorunda. Ama eğer bunu yapıyorsanız, muhtemelen @cpus ortak olmak için. Yapmanız gereken şey şudur:

class Computer
  attr_reader :cpus
end

Şimdi Computer.new(4).cpus yapabilirsiniz.

Yeniden unutmayınherhangi birsınıf mevcut ve okuyucuya özel bir ıvar olun. Bir erişimci sadece bir yöntem olduğundan, Computer.new(4).send(var_that_evaluates_to_cpus) yapabilirsiniz

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alfredo Garcia

    Alfredo Garc

    25 Mayıs 2007
  • Friday Night Cranks

    Friday Night

    27 Mayıs 2007
  • TROPFEST

    TROPFEST

    27 Mart 2007