In per5 kann ich einfach eine Variable wie $ foo oder @bar verwenden, ohne "mein" zu verwenden.Warum kann nicht perl6 einfach autovivify, so dass ich nicht "mein" die ganze Zeit verwenden muss?
$foo=1; @bar=(1,2);
In Perl6, warum muss ich "mein" die ganze Zeit verwenden? Andernfalls sagt der Compiler die Variable undeclared.Warum kann nicht perl6 nur autovivify?
print "{my @a=1,2,3;}\n"; # have to use "my" to declare variable
print "{@a=1,2,3;}\n"; # this is error 'Variable '@a' is not declared'
Ich mag nicht die Einschränkung, immer "mein" verwenden zu müssen. Dies ist zu niedrig wie C; sehr umständlich.
Gibt es eine Möglichkeit, immer autovivify einzuschalten?
Danke.
Der einzige Grund dafür ist, dass es in früheren Versionen so funktioniert. Wenn Sie Ihren Perl 5-Code nicht mit 'use strict' und' use warnings' (oder anderen Deklarationen, die das in Ihrem Namen tun) starten, schreiben Sie schrecklichen Perl 5-Code. Ich empfehle das Buch "Modern Perl" zu lesen (kostenlos vom Autor/Herausgeber zur Verfügung gestellt). –
Dies ist überhaupt nicht so niedrig wie C. Es ist eher ein sehr hohes Niveau. In sehr-sehr niedrigen Programmierung wie Assembly können Sie jede beliebige RAM-Adresse verwenden, ohne zu deklarieren, was Sie zuerst verwenden möchten. Wenn Sie zufällig vergessen, kann dies dazu führen, dass Sie versehentlich die gleiche RAM-Adresse für zwei Variablen verwenden - einen Fehler verursachen. Mit "mein" kannst du der Sprache einen Hinweis geben: hey, hier deklariere ich meine Variable. Wenn Sie es vor der Deklaration verwenden, kann sich der Compiler beschweren, wenn Sie es zweimal deklarieren, kann sich der Compiler beschweren. Dann weißt du, dass du einen Fehler gemacht hast. – slebetman
* "Der einzige Grund, warum es standardmäßig so ist, ist, dass es in früheren Versionen so funktioniert hat" * Aber so * war es vorher nicht. Standardmäßig ist jede Perl 5-Variable eine Paketvariable. Es ist jetzt der Standard, weil der Perl 5 Weg falsch war. – Borodin