In computer programming, duck typing is a style of dynamic typing in which an object's current set of methods and properties determines the valid semantics, rather than its inheritance from a particular class or implementation of a specific interface. The name of the concept refers to the duck test, attributed to James Whitcomb Riley, which may be phrased as follows: "when I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.

PropertyValue
dbpprop:abstract
  • In computer programming, duck typing is a style of dynamic typing in which an object's current set of methods and properties determines the valid semantics, rather than its inheritance from a particular class or implementation of a specific interface. The name of the concept refers to the duck test, attributed to James Whitcomb Riley, which may be phrased as follows: "when I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck. " In duck typing, one is concerned with just those aspects of an object that are used, rather than with the type of the object itself. For example, in a non-duck-typed language, one can create a function that takes an object of type Duck and calls that object's walk and quack methods. In a duck-typed language, the equivalent function would take an object of any type and call that object's walk and quack methods. If the object does not have the methods that are called then the function signals a run-time error. It is this action of any object having the correct walk and quack methods being accepted by the function that evokes the quotation and hence the name of this form of typing. Duck typing is aided by habitually not testing for the type of arguments in method and function bodies, relying on documentation, clear code, and testing to ensure correct use. Users of statically typed languages new to dynamically typed languages are usually tempted to add such static (before run-time) type checks, defeating the benefits and flexibility of duck typing, and constraining the language's dynamism.
  • Duck-Typing ist ein Konzept der Objektorientierung, das die Anwendbarkeit bestimmter Verfahren nicht an die Ableitung der Klasse von einer bestimmten Superklasse oder der förmlichen Implementierung einer Spezifikation knüpft, sondern an das Vorhandensein bestimmter Merkmale, in Anlehnung an James Whitcomb Rileys Gedicht was übersetzt bedeutet: „Wenn ich einen Vogel sehe, der wie eine Ente läuft, wie eine Ente schwimmt und wie eine Ente schnattert, dann nenne ich diesen Vogel eine Ente. “ Duck-Typing ist charakteristisch für objektorientierte Skriptsprachen wie Python und Ruby. Beim Duck-Typing wird zur Laufzeit des Programms geprüft, ob ein Objekt die entsprechenden Merkmale unterstützt. Dies führt wie bei allen dynamischen Typsystemen zu einer erhöhten Flexibilität, reduziert aber ebenso die Möglichkeit, statisch zur Übersetzungszeit Fehler im Programm zu finden. In Sprachen wie Java und C# ist es erforderlich, bei der Definition einer Klasse anzugeben, welche Interfaces implementiert werden sollen. Diese Sprachen erlauben es somit nicht, nach der Fertigstellung einer Klasse festzulegen, dass die Klasse zusätzlich noch ein anderes Interface implementiert (selbst wenn alle Methoden vorhanden sind, und die Objekte somit die gesamte Funktionalität schon bereitstellen). In der Situation, dass der Programmierer keinen Zugriff auf den Quellcode der Klasse besitzt, ist eine Erweiterung nicht direkt möglich. Ein statisches Typsystem mit Breitensubtyping auf Objekten ermöglicht dieselbe Flexibilität wie Duck-Typing, bietet aber dennoch die Möglichkeit, Fehler zur Übersetzungszeit zu finden (falls Merkmale nicht dynamisch zur Laufzeit der Programms Objekten hinzugefügt werden sollen). Ein Beispiel für eine Programmiersprache, die Breitensubtyping auf Objekten unterstützt, ist Objective CAML.
  • Le duck typing est une manière de programmer avec des types dynamiques. L'ensemble des méthodes d'un objet détermine la juste sémantique. fonction calcule(a, b, c) => renvoi (a+b)*c a= calcule (1, 2, 3) b= calcule ('pommes ', 'et oranges, ', 3) affiche en_chaine a affiche en_chaine b Dans cet exemple, des objets sans relation d'héritage peuvent être utilisés (nombres, listes et chaines de caractères). Tant qu'ils gèrent les méthodes "+" et "*", l'opération fonctionne. Traduit dans des langages comme Ruby ou Python, la sortie serait : pommes et oranges, pommes et oranges, pommes et oranges,
  • ダック・タイピング({{lang|en|duck typing)とは、Smalltalk、Python、Rubyなどのいくつかの動的型付けオブジェクト指向プログラミング言語に特徴的な型付けの作法のことである。それらの言語ではオブジェクト(変数の値)に何ができるかはオブジェクトそのものが決定する。つまり、オブジェクトがあるインタフェースのすべてのメソッドを持っているならば、たとえそのクラスがそのインタフェースを宣言的に実装していなくとも、オブジェクトはそのインタフェースを実行時に実装しているとみなせる、ということである。それはまた、同じインタフェースを実装するオブジェクト同士が、それぞれがどのような継承階層を持っているのかということと無関係に、相互に交換可能であるという意味でもある。 この用語の名前は「ダック・テスト」に由来する。 "If it walks like a duck and quacks like a duck, it must be a duck"(もしもそれがアヒルのように歩き、アヒルのように鳴くのなら、それはアヒルである) デーブ・トーマスはRubyコミュニティで初めてこの言葉を使ったと考えられている。 C++のtemplateはダック・タイピングの静的版である。例えば、各種のiteratorはIterator基底クラスのようなものからメソッドを継承しているわけではないが、同じ構文でコンパイルが通るならば、それはiteratorの一種として扱える。C++で言う「同じインターフェースを持つ」とは、コンパイラにとってインターフェースが同じだということである。したがって、iteratorの実装はオブジェクトである必要すらない。 もう1つ、ダック・タイピングに似たアプローチにOCamlのstructural subtypingがある。メソッドのシグネチャが互換ならば、宣言上の継承関係は関係なくとも、オブジェクトの型は互換であるというものである。これはOCamlの型推論システムによってコンパイル時にすべて決定される。
  • Duck-typing is een term uit de informatica waarmee een bepaalde eigenschap van het type-systeem van een programmeertaal aangeduid wordt. In een programmeertaal met duck-typing is het mogelijk objecten aan te passen door nieuwe methoden of attributen aan deze objecten toe te voegen.
  • Duck typing (z ang. kacze typowanie) to rozpoznawanie typu obiektu nie na podstawie deklaracji, ale przez badanie metod udostępnionych przez obiekt. Technika ta wywodzi się z powiedzenia: "jeśli chodzi jak kaczka i kwacze jak kaczka, to musi być kaczką". Kacze typowanie znajduje najczęściej zastosowanie podczas rzutowania typów i przeciążania operatorów, w którym do określenia, czy obiekt może stworzyć wyrażenie z obiektem innego typu wykorzystywana jest odpowiednia metoda konwersji lub obsługi.
  • Латентная, неявная или утиная типизация (калька с англ. Duck typing) — вид динамической типизации, применяемой в некоторых языках программирования, когда границы использования объекта определяются его текущим набором методов и свойств, в противоположность наследованию от определёного класса. То есть считается, что объект реализует интерфейс, если он содержит все методы этого интерфейса, независимо от связей в иерархии наследования и принадлежности к какому-либо конкретному классу. Название термина пошло от английского «duck test», который в оригинале звучит как: «If it walks like a duck and quacks like a duck, it must be a duck» («Если что-то ходит, как утка, и крякает, как утка, то это, должно быть, утка»). Утиная типизация решает такие проблемы иерархической типизации, как: невозможность явно указать (путем наследования) на совместимость интерфейса со всеми настоящими и будущими интерфейсами, с которыми он идейно совместим чрезмерное увеличение числа связей в иерархии типов при хотя бы частичной попытке это сделать. Шаблоны в Си++ реализуют статическую форму неявной типизации. Различные итераторы, например, не обязаны наследоваться от общего класса, но могут быть использованы в единой манере, если реализуют соответствующие методы. Другим близким подходом является структурные подтипы в OCaml, где типы объектов совместимы, если совместимы сигнатуры их методов, независимо от объявленного наследования, причём всё это проверяется во время компиляции программы.
  • 在程序设计中,duck typing是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定。这个概念的名字来源于由James Whitcomb Riley提出的鸭子测试(见下面的“历史”章节),“鸭子测试”可以这样表述: 在duck typing中,关注的不是对象的类型本身,而是它是如何使用的。例如,在不使用duck typing的语言中,我们可以编写一个函数,它接受一个类型为鸭的对象,并调用它的走和叫方法。在使用duck typing的语言中,这样的一个函数可以接受一个任意类型的对象,并调用它的走和叫方法。如果这些需要被调用的方法不存在,那么将引发一个运行时错误。任何拥有这样的正确的走和叫方法的对象都可被函数接受的这种行为引出了以上表述,这种决定类型的方式因此得名。 Duck typing通常得益于不测试方法和函数中参数的类型,而是依赖文档、清晰的代码和测试来确保正确使用。从静态类型语言转向动态类型语言的用户通常试图添加一些静态的(在运行之前的)类型检查,从而影响了duck typing的益处和可伸缩性,并约束了语言的动态特性。
dbpprop:hasPhotoCollection
dbpprop:reference
rdfs:comment
  • In computer programming, duck typing is a style of dynamic typing in which an object's current set of methods and properties determines the valid semantics, rather than its inheritance from a particular class or implementation of a specific interface. The name of the concept refers to the duck test, attributed to James Whitcomb Riley, which may be phrased as follows: "when I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.
  • Duck-Typing ist ein Konzept der Objektorientierung, das die Anwendbarkeit bestimmter Verfahren nicht an die Ableitung der Klasse von einer bestimmten Superklasse oder der förmlichen Implementierung einer Spezifikation knüpft, sondern an das Vorhandensein bestimmter Merkmale, in Anlehnung an James Whitcomb Rileys Gedicht was übersetzt bedeutet: „Wenn ich einen Vogel sehe, der wie eine Ente läuft, wie eine Ente schwimmt und wie eine Ente schnattert, dann nenne ich diesen Vogel eine Ente.
  • Le duck typing est une manière de programmer avec des types dynamiques. L'ensemble des méthodes d'un objet détermine la juste sémantique. fonction calcule(a, b, c) => renvoi (a+b)*c a= calcule (1, 2, 3) b= calcule ('pommes ', 'et oranges, ', 3) affiche en_chaine a affiche en_chaine b Dans cet exemple, des objets sans relation d'héritage peuvent être utilisés (nombres, listes et chaines de caractères). Tant qu'ils gèrent les méthodes "+" et "*", l'opération fonctionne.
  • Duck-typing is een term uit de informatica waarmee een bepaalde eigenschap van het type-systeem van een programmeertaal aangeduid wordt. In een programmeertaal met duck-typing is het mogelijk objecten aan te passen door nieuwe methoden of attributen aan deze objecten toe te voegen.
  • Duck typing (z ang. kacze typowanie) to rozpoznawanie typu obiektu nie na podstawie deklaracji, ale przez badanie metod udostępnionych przez obiekt. Technika ta wywodzi się z powiedzenia: "jeśli chodzi jak kaczka i kwacze jak kaczka, to musi być kaczką".
  • Латентная, неявная или утиная типизация (калька с англ.
rdfs:label
  • Duck typing
  • Duck-Typing
  • Duck typing
  • ダック・タイピング
  • Duck-typing
  • Duck typing
  • Утиная типизация
  • Duck typing
owl:sameAs
skos:subject
foaf:page
is dbpprop:redirect of
is dbpprop:typing of