Индексация непосредственно в возвращенный массив в Perl

Этот вопрос спросили о PHP и здесь и здесь, и у меня есть тот же вопрос для Perl. Учитывая функцию, которая возвращает список, там какой-либо путь (или каков лучший способ) сразу индексировать в него, не используя временную переменную?

Например:

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

Я вижу, почему синтаксис во второй строке недопустим, таким образом, я задаюсь вопросом, существует ли способ получить тот же эффект без первого присвоения возвращаемого значения к списку и индексации от этого.

16
задан Community 23 May 2017 в 12:14
поделиться

2 ответа

Просто используйте круглые скобки, чтобы определить свой список, а затем проиндексируйте его, чтобы получить желаемый элемент (ы):

my $a = (split /,/, $comma_separated)[0];
26
ответ дан 30 November 2019 в 17:04
поделиться

Также как вы можете сделать это:

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

Вы можете сделать это:

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

my $ a в LHS (левая часть) обрабатывается как скалярный контекст. my ($ a) - контекст списка. Это список из одного элемента, поэтому он получает только первый элемент, возвращенный из split .

У него есть дополнительное преимущество в виде автоматического ограничения разделения, поэтому нет лишней работы, если $ comma_separated большой.

8
ответ дан 30 November 2019 в 17:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: