Was ist Interface-Duck-Typing?

Hörte ich die word-Schnittstelle Duck-Typing, aber überhaupt nicht verstehen, was ist es? So lese ich in wiki über, und Sie sagte:

In computer-Programmierung mit objektorientierten Programmiersprachen, duck-typing ist ein Stil der Typisierung, in denen ein Objekt die Eigenschaften und Methoden Bestimmung der gültigen Semantik, anstatt sein Erbe von einer bestimmten Klasse oder die Implementierung einer expliziten Schnittstelle. Der name des Konzepts bezieht sich auf die Ente zu testen.

Konnte aber immer noch nicht verstehen, was es. So sah ich Ihr Programm, aber Sie nutzen dynamic Stichwort zu nennen quack() & feather() Funktion alle Klassen.

Ich würde verlangen, dass Sie alle erklären Sie bitte in einfachen Weg, was ist Interface-Duck-Typing und wie die Umsetzung in C# v2.0, weil es keine dynamic Schlüsselwort.

using System;

namespace DuckTyping 
{  
  public class Duck 
  {
    public void Quack() 
    {
      Console.WriteLine("Quaaaaaack!");
    }

    public void Feathers() 
    {
      Console.WriteLine("The duck has white and gray feathers.");
    }
  }

  public class Person 
  {
    public void Quack()
    {
      Console.WriteLine("The person imitates a duck.");
    }

    public void Feathers() 
    {
      Console.WriteLine("The person takes a feather from the ground and shows it.");
    }
  }

  internal class Program 
  {
    private static void InTheForest(dynamic duck) 
    {
      duck.Quack();
      duck.Feathers();
    }

    private static void Game() 
    {
      Duck donald = new Duck();
      Person john = new Person();
      InTheForest(donald);
      InTheForest(john);
    }

    private static void Main() 
    {
      Game();
    }
  }
}
  • ericlippert.com/2014/01/02/what-is-duck-typing
  • Sie können nicht (gut, es sei denn, Sie tun hässliches Spiegelbild), duck typing ist einzigartig für dynamische Sprachen und nicht wirklich eine ganze Menge Sinn für mich in statisch typisierten Sprachen. Ich würde sagen, die Java-und Groovy-Beispiele sind besser, als Sie tatsächlich zeigt ein Mensch, dass Kann nicht quaken... Weil die meisten Allgemeine Konsens ist, dass wenn es "quack" es ist eine Ente... Bedeutung Ihrer Person ist auch eine Ente, wie er kann "Quack"... das Ergebnis seiner Fähigkeit zu "Quack" ist vielleicht anders, aber er kann es noch.
  • Go ist statisch typisiert, sondern benutzt duck typing für Schnittstellen. Ein wirklich tolles feature, IMO.
  • Ich weiß nicht, aber es klingt wie eine Sprache, die wie viele andere hat er den Fuß in beiden lagern... (Das ist toll, btw.)... Typoskript tut viel die gleiche Sache, so im wesentlichen ich denke, Sie haben Recht, es kann Sinn machen...
  • ist es ähnlich ADAPTER-MUSTER ?
  • "Wenn es quakt wie eine Ente, Spaziergänge wie eine Ente, ist es eine Ente". C# verwendet, duck-typing (von was ich sagen kann) mit der foreach -, check-out-Abschnitt 8.8.4

InformationsquelleAutor Thomas | 2014-01-22
Schreibe einen Kommentar