Wikipedia sagt "Perl 6 bietet ein hybrides Typisierungssystem an, bei dem der Programmierer statische Typisierung verwenden, dynamische Typisierung verwenden oder die beiden mischen kann." Wie funktioniert Hybrid-Typisierung? Bedeutet das Verwenden der statischen Typisierung in Perl einfach, dass ich einen Typ deklariere und Strings explizit in Zahlen umwandeln muss und umgekehrt im Austausch für Sicherheit und Laufzeitgeschwindigkeit? Ich habe bemerkt, dass es sehr wenig Informationen zu dieser Funktion zu geben scheint.Wie funktioniert Hybrid-Typisierung?
Antwort
Wie ich es verstehe, bedeutet Hybrid-Typisierung einfach diese Art Anmerkungen unterstützt werden, aber optional:
my Int $i = 0; # static typing
my $i = 0; # dynamic typing
Wenn Sie die expliziten Typenannotationen verwenden, kann der Compiler der Dinge für Sie überprüft und vielleicht den Code besser optimieren . Es gibt ähnliche Funktionen in anderen Sprachen, auch, wie Objective-C:
NSString *foo = @"foo"; // explicit type signature, static typing
id foo = @"foo"; // dynamic typing
Technisch gesehen ist dies nicht genau der Unterschied zwischen statischen und dynamischen Typisierung. Es gibt Sprachen mit einem statischen System, für die keine expliziten Anmerkungen erforderlich sind. In Swift oder Haskell können Sie Dinge wie let f = 0
(ohne Typ-Annotation) sagen und erhalten trotzdem eine statische Typprüfung dank Typ-Inferenz. Siehe auch What to know before debating type systems.
Es gibt auch andere, interessantere Eigenschaften hinsichtlich des Unterschieds zwischen statischer und dynamischer Typisierung in Perl 6, siehe Jnthn’s talk.
Wenn Sie einen Typ hinzufügen, wird er immer für Sie überprüft, was sich von dem unterscheidet, was Sie geschrieben haben. –