ok bis das kapitel über subs kommt will ich mal hier die die hochlichter nennen was in perl6 alles gegenüber perl5 verbessert wurde:
sub ($a, $b, *@rest) {} # statt:
sub {
my $a = shift;
my $b = shift;
my @rest = @_;
}
OOP mit autogenerierten new, gettern und settern:
class Heart::Gold {
has int $.length;
} # statt:
package Heart::Gold;
sub new {
bless {length => 0 }, shift;
}
sub length {
my $self = shift;
my $length = shift;
if ($length) {$self->{length} = $length}
else {$self->{length} }
}
und ihr wisst das in realem weniger gestuztem code die vorteile wesentlich wachen werden
junctions:
if $a == 3|4|7 {...} # statt:
if ($a == 3 or $a == 4 or $a == 7) {...}
direkterer mit hashes for ist weitaus mächtiger geworden
for %hash.kv -> $key, $value { say "$key => $value" } # statt:
for my $key (keys %hash) {print "$key => $hash{$key}\n"}
das bereits vorgestellte given, when ist eine grössere sache, mit den parameter die einzige sache die php vorraus hatte, aber was mir an python immer gefiel war
if 1 < $a < 5 {...} # geht nun auch in perl6
for 1..15:by(-2){...} # das auch
was auch ständigen code vereinfacht:
$a = $b // $c; statt: $a = defined $b ? $b : $c;
wem jemals die $1-$9 zu wenig war hat jetzt nth() aber es fallen jetzt viele limits weg an denen ihr euch vielleicht öftes gestört hat. auch input stream kann man jetzt auf autochomp stellen...
nächtes mal mehr
PS. warum ist das new rot?\n\n
<!--EDIT|lichtkind|1146129625-->