SORU
11 Ocak 2011, Salı


Ruby vs __send__gönderin

some_instance.send kavramını anlıyorum ama bu iki şekilde de diyebilirsiniz neden olduğunu anlamaya çalışıyorum. Ruby Koanları pek çok farklı şekilde aynı şeyi yapmak sağlamanın ötesinde bir nedeni olduğu anlamına gelmez. Burada kullanım iki örnek:

class Foo
  def bar?
    true
  end
end

foo = Foo.new
foo.send(:bar?)
foo.__send__(:bar?)

Eğer bu konuda bir fikrin var mı?

CEVAP
11 Ocak 2011, Salı


Bazı sınıflar (örneğin standart kütüphane yuva sınıfı) Object#send alakası yok send kendi yöntemi tanımlayın. Eğer herhangi bir sınıfın nesneleri ile çalışmak istiyorsanız, __send__ güvenli tarafta olmak için kullanmanız gerekir.

Şimdi o send ve __send__ neden soru bırakır. Eğer sadece __send__ adı olsaydı orada send herhangi bir karışıklık olmadan diğer sınıflar tarafından kullanılabilir. Bu nedenle o o send varolan ilk ve tek sonra anladı ki adı send belki de işe yaramayacak kullanılan diğer bağlamlarda, yani __send__ eklendi (bu da aynı şey oldu id object_id Bu arada).

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alexander Johnson

    Alexander Jo

    26 Temmuz 2008
  • midomansour

    midomansour

    19 EYLÜL 2009
  • Pepsi

    Pepsi

    1 Kasım 2005