Эй. В Python я могу это сделать:Как вернуть список в качестве ссылки на массив в Perl?
def fnuh():
a = "foo"
b = "bar"
return a,b
Могу ли я вернуть список в такой же элегантный способ в Perl, особенно когда тип возврата подпрограммы должна быть ссылка на массив?
Я знаю, что могу сделать
sub fnuh {
my $a = "foo";
my $b = "bar";
my $return = [];
push (@{$return}, $a);
push (@{$return}, $b);
return $return;
}
Но я держу пари, что есть лучший способ сделать это в Perl. Ты знаешь это?
Будьте осторожны, о различии между списками и массивами. Это область, которая вызывает много путаницы. Понимание различий важно для понимания того, как работает контекст. См. Http://perldoc.perl.org/perlfaq4.html#What-is-the-difference-between-a-list-and-an-array%3f и http://www.perlmonks.org/?node_id= 130861 и http://www.perlmonks.org/?node_id=719099 для обсуждения. – daotoad
Спасибо, я думал, что это должно было включать списки, но на самом деле решение, которое мне больше всего нравится, - return [$ a, $ b] - не связано с ним. Если вы знаете, как лучше сформулировать намерение вопроса, дайте мне знать. – 0x89
Ваш вопрос в порядке. В большинстве языков нет реального различия между списком и массивом. Perl делает различие. Список - упорядоченная группа значений.Массив - это переменный тип данных, который содержит упорядоченный набор значений, доступных по индексу. Ваш предпочтительный ответ делает * точно * то, что вы просили. Я просто пытался подчеркнуть различие между массивами и списками. Это тонкая вещь, но получение ее действительно помогает понять, как контекст работает в Perl. – daotoad