/ / Indeksowanie bezpośrednio do zwróconej tablicy w Perlu - perlu

Indeksowanie bezpośrednio do zwróconej tablicy w Perlu - perlu

To pytanie zostało zadane na temat obu PHP tutaj i tutaji mam to samo pytanie do Perla. Biorąc pod uwagę funkcję, która zwraca listę, czy jest jakiś sposób (lub jaki jest najlepszy sposób) natychmiastowego indeksowania go bez użycia tymczasowej zmiennej?

Na przykład:

my $comma_separated = "a,b,c";
my $a = split (/,/, $comma_separated)[0]; #not valid syntax

Widzę, dlaczego składnia w drugiej linii jest niepoprawna, więc zastanawiam się, czy istnieje sposób na uzyskanie tego samego efektu bez uprzedniego przypisania wartości zwracanej do listy i indeksowania z tego.

Odpowiedzi:

25 dla odpowiedzi № 1

Użyj nawiasów, aby zdefiniować listę, a następnie zindeksuj ją, aby pobrać żądane elementy:

my $a = (split /,/, $comma_separated)[0];

8 dla odpowiedzi № 2

Tak jak możesz to zrobić:

($a, $b, $c) = @array;

Możesz to zrobić:

my($a) = split /,/, $comma_separated;

my $a na LHS (lewa strona) jest traktowana jako kontekst skalarny. my($a) jest kontekstem listy. Jest to pojedyncza lista elementów, więc pobiera tylko pierwszy element zwrócony split.

Dodatkową zaletą jest automatyczne ograniczenie podziału, więc nie ma zmarnowanej pracy $comma_separated jest wielki.