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

  • fast2hell

    fast2hell

    16 AĞUSTOS 2006
  • Fr. Eckle Studios

    Fr. Eckle St

    29 Kasım 2006
  • Hidden Wolf TV

    Hidden Wolf

    1 EKİM 2009