Чем отличаются массивы от Perl? - PullRequest
1 голос
/ 14 мая 2011

Я могу создавать двумерные массивы в Perl.Чем отличаются 2d массивы от Hash?Почему хеш является примитивной структурой данных в Perl, когда мы можем моделировать хеш-функции с помощью массивов?

Ответы [ 2 ]

6 голосов
/ 14 мая 2011

Возможно, вы имеете в виду, что у вас может быть такая структура данных:

my $array_hash = [
  [ "key1", "value1" ],
  [ "key2", "value2" ],
];

Для небольших данных это хорошо работает, но рассмотрим случай, когда в таком массиве около 1000 записей. Затем, чтобы найти конкретную запись по ее ключу, вам нужно выполнить поиск по всему массиву, что очень медленно.

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

Другая причина того, что хеш-таблицы встроены в Perl, заключается в том, что они являются полезными структурами данных, поэтому не каждый программист должен реализовывать свои собственные.

0 голосов
/ 15 мая 2011

При построении объектов многих типов методу new можно передать список аргументов, которые могут отображаться в виде хэша, но на самом деле это просто массив, где каждое четное число является ключом, а каждое нечетное числоявляется значением.

my $obj = Some::New::Class->new(
  name => 'Sam',
  age  => 0,
  email => 'sam@localhost'
);

Это эквивалентно:

my $obj = Some::New::Class->new(
  'name', 'Sam',
  'age', 0,
  'email', 'sam@localhost'
);

Однако вы можете указать new () искать хеш, который будет выглядеть примерно так:

my $obj = Some::New::Class->new({
  name => 'Sam',
  age  => 0,
  email => 'sam@localhost'
});

Если это не ответит на ваш вопрос, надеюсь, я хотя бы предоставил некоторую информацию.

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