Thread indexzähler in for-schleife?
(11 answers)
Opened by Muffi at 2014-11-21 14:56
Methods: (5 + 9).ToString;
Das Problem hierbei ist, das Perl im Perl5 im Kern nicht Objektorientiert arbeitet. Sowas: Code: (dl
)
(5+9)->toString() Code (perl): (dl
)
Math::Number->new(5+9)->toSting() Völlig unmöglich es es also nicht das Verhalten nachzubilden. Nur hat sich keiner bisher die Mühe gemacht. var byLength := from n in Names order by n.Length Code (perl): (dl
)
my @byLength = sort{ length($a) <=> length($b) } @Names; Das ist nur unwesentlich länger. Sicher mit SQL-Like Statements kann man einiges machen. Aber das funktioniert nur richtig wenn alles Objekte mit vordefinierten Attributen sind. Das ist bei Perl5 nicht der Fall. Bei Perl6 sieht das ganz anders aus. Da kann man etwas passendes definieren, auch weil der Parser flexiebler ist. Aber auch in Perl5 man kann durchaus ein Paket bauen das ähnliches bietet: ungetestet: Code (perl): (dl
)
my @byLength = from my $n, in @names, order_by { length($n) }; Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 sub from(\$$$){ my ($ref,$list,$code)=@_; return sort{ $$ref = $a ; my $ra = $code->(); $$ref = $b ; my $rb = $code->(); no warnings; $ra <=> $rb or $ra cmp $rb }@$list; } sub in(\@) { return $_[0]; } sub order_by(\&) { return $_[0] } Ein vollständige Implementation wäre ein enormer Aufwand. Class Contracts: require aIncBy > 0; Hält in Perl (möglicherweise / wahrscheinlich?) Einzug: Code (perl): (dl
)
sub Inc($self,$aIncBy > 0){ $self->{fValue}+=$aIncBy; ....} Bitte korrigiert mich wenn hier hier falsch liege. So habe ich das zumindest in Erinnerung. Enhanced Boolean Comparisons: if 5 < x <= 10 then begin Das wäre wirklich Praktisch. Das ist etwas was ich immer gerne schreiben würde: Code: (dl
)
if(0 < $x < 100) { ... Code (perl): (dl
)
if(0 < $x and $x < 100) { ... Zwar kann man da mit $_ tricksen das ganze ist aber nicht so schön anzuschauen. Das Problem dabei ist der Parser von Perl. so etwas: 0 < $x < 100 kann bestehenden Code leicht kaputt machen und ist eine extreme Ausnahme im Parser. Ich denke Das sich einfach noch keiner getraut hat das in den Parser zu bauen. Ich kann mich dunkel erinnern das es Sourcefilter gibt das so was umwandeln können. |