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

  • ASUS Campus Life

    ASUS Campus

    18 Mart 2013
  • HTC Tutorials

    HTC Tutorial

    21 EYLÜL 2010
  • TheJoeycool2010

    TheJoeycool2

    12 Temmuz 2010