[Vienna-pm] scalar @a vs. scalar @a[0..$#a]
Renee B
pm.list at perl-services.de
Fri Jul 26 02:36:59 PDT 2013
Ja, es ist dokumentiert, dass Listen im Skalarkontext das letzte Element
zurückliefern.
Siehe dazu
perldoc perldata ("list value constructors")
perldoc perlfaq4 ("What is the difference between a list and an array?")
perldoc perlop ("Comma operator")
On 26.07.2013 11:08, Josef wrote:
> Hallo allerseits!
>
> Perl gibt im Scalar-Kontext (per DWIM Ratespiel) verschiedenes
> zurück, wie Anzahl, Ref, ersten oder eben letzten Wert.
>
> perl5.16.1>
> @a=qw(a b c d);
>
> say scalar @a; # 4
> say scalar @a[0..3]; # d
>
> Ist so fix definiert? Wo? Somit auch in zukünftige Perl so?
>
> Laut perldata:
> @days[3,4,5] # same as ($days[3],$days[4],$days[5])
>
> Und ja:
> say scalar( ($a[0],$a[1],$a[2],$a[3]) ); # d
>
>
> Wenn ja würde es sich als Idiom eignen:
> (map{...}@_)[0..$#_] # falls Scalar nur letztes Element statt Anzahl
>
> Zumindest hübscher als:
> sub {wantarray ? @_ : $_[-1]}->(map {...}@_)
>
> Unter der Annahme das wenn im Scalar-Kontext verwendet, auch nur ein
> Element übergeben wird, bleibt die Performancefrage, auf
> @a vs. @a[0..$#a] im Listkontext?
>
> Bzw. andersrum:
> say scalar qw(a b c d); # d
> say scalar( ()=qw(a b c d) ); # 4
>
> ciao,
> Josef
>
> _______________________________________________
> Vienna-pm mailing list
> Vienna-pm at pm.org
> http://mail.pm.org/mailman/listinfo/vienna-pm
More information about the Vienna-pm
mailing list