Неоднородные многомерные массивы в Perl - PullRequest
0 голосов
/ 17 января 2019

Можно ли определить многомерные массивы в Perl, которые могут иметь неоднородную размерность? Как в следующем примере?

Agenda = @( 'Monday' , {'Tuesday',Lunch} , 'Wednesday' , 'Thursday', {'Friday','Lunch','Dinner'}) 

Обратите внимание, как второй элемент {'Tuesday',Lunch} представляет собой сам массив.

1 Ответ

0 голосов
/ 17 января 2019

Да, просто используйте ссылки на массивы. Использование JSON в качестве выходного формата для иллюстрации вашего примера:

use strict;
use warnings;

use JSON;

my @agenda = (
    'Monday',
    ['Tuesday', 'Lunch'],
    'Wednesday',
    'Thursday',
    ['Friday', 'Lunch', 'Dinner'],
);

print JSON->new->pretty->encode(\@agenda);

Выход:

$ perl dummy.pl
[
   "Monday",
   [
      "Tuesday",
      "Lunch"
   ],
   "Wednesday",
   "Thursday",
   [
      "Friday",
      "Lunch",
      "Dinner"
   ]
]

РЕДАКТИРОВАТЬ Лично я бы вместо этого использовал список ссылок на хэш, т.е.

my @agenda = (
   {
       day    => 'Monday',
       events => [],
   },
   ...
   {
       day    => 'Friday',
       events => ['Lunch', 'Dinner'],
   },
   ...
);

foreach my $entry (@agenda) {
   my $day    = $entry->{day};
   my $events = $entry->{events};

   print $day . ": " . join(" ", @{ $events }) . "\n";
}

или даже используйте хеш-ссылку для events.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...