şükela:  tümü | bugün
  • weakly typed, strongly typed, statically typed gibi bir başka tip kontrol etme şekli. duck bildiğiniz gibi ingilizce'de ördek demektir, duck typing de şu özlü söz ile açıklanabilir: if it walks like a duck, and talks like a duck then we can treat it like a duck.

    yani diyor ki: eğer ördek gibi yürüyorsa ve ördek gibi konuşuyorsa, o vakit ona ördek muamelesi yapabiliriz. yani bir object aradığımız method'ları sağlıyorsa onun class'ının ne olduğu önemli değildir. güle güle interface, konuyla uzaktan ilgili olsa da ruby'nin mix-in'lerine bir göz atmak isteyebilirsiniz. duck typing'in örnekleri ruby ve python programlarında bolca bulunabilir. örnek ruby kodumuzu yazalım:

    class ordek
    def konus() puts "vak" end
    end
    class ordekgibin
    def konus() puts "vuak" end
    end
    suru = [ordek.new, ordekgibin.new]
    suru.each do |d| d.konus end

    not: ordek'in o'su büyük, ordekgibin'in o'su ve g'si büyük.
  • (bkz: duck tape)
  • (bkz: duck test)
  • http://en.wikipedia.org/wiki/duck_typing adresinden kendisi hakkında bir miktar daha bilgiye ulaşabilirsiniz.
  • .net içerisine 4. sürümle beraber gireceği söylenen güzelliktir. özet olarak çok yüzlü objeleri kalıtımsız biçimde dinamik olarak kullanabilmek denebilir. bu yüzden olsa gerek .net içerisine dynamic typing terimi ile giriş yapacağı söylenmektedir. mevcut durumda önce bir yüz* tanımlayıp, sonra ilgili objelere bu yüz ü uygulamak* vasıtası ile kullanıdığımız çok yüzlülük*, bu yeni yaklaşım ile bambaşka güzel bir olay olacaktır kesinlikle.

    şöyleki mesela zilyon tane çok alakasız sınıfınız var ve hepsinde tanımlı bir adet dispose metodu var, bu objeleri mesela iterasyon ile tek seferde topluca yok etmek için hepsine idisposable yüzünü uygulamak yerine direkt olarak sanki uygulama yapılmışcasına kullanabileceğiz. .net tarafı için ilk duyulduğunda nasıl olur ki dedirten bir yaklaşım, linq sayesinde kodun içine girdi aslında biz farketmeden.

    bir linq sorgusu aldığımızda sorgunun sonucunu kodlama zamanı içerisinde dil bize hesaplayıp ona göre kullanım olasılığı sağlıyor. işte mesela dedik ki dim strs=from str in stringdizisi select str bu andan itibaren bizim için eskiden olsa bir object türü değişken olması gereken strs değişkeni otomatik olarak sanki öyle tanımlanmış gibi ienumerable(of string) şeklinde kullanılabiliyor. hatta ve hatta çıktının yapısal halinin kodda bulunmadığı durumlarda .net bize anonymous type diye bir güzellikle sanki çıktı için tanımlanmış bir yapı* gibi bir anonymous type tanımlayıp kullanım olasılığı sunuyor, işte ucundan duck typing denilebilir, evet...
  • bu konu hakkinda eksi sozluk diye bir sitede 'daha cok bilgi icin wikipedia okuyun' diyenler olmus vakt-i zamaninda.

    wikipedia'daki tanimin neden dogru olmadigi (hatta neden bok gibi oldugu) hakkinda hacı eric lippert'in surada cok guzel bir makalesi var: http://ericlippert.com/…/01/02/what-is-duck-typing/

    ayrica golang'de static compile-time checking ile ciktigi gunden beri vardir.
  • biri: vakvaklayabilir misin?
    öteki: evet
    b: yürüebilir misin?
    ö: evet
    b: konuşabilir misin?
    ö: hayır

    b: ...
    ö: ...

    b: bu kesinlikle bir ördek