({}) vs. ()

| 1 комментарий

Сколько существует YAPC::TV, столько существует и небольшой вспомогательный скрипт, который автоматизирует работу по конвертированию видеофайлов в разные форматы.

В этой программе есть функция convert, которая принимает ссылку на хеш:

sub convert {
    my $param = shift;

И затем разыменовывает ее:

my $s = "-s $$param{s}" if $$param{s};

При этом каждый вызов convert содержит обилие скобок — одни для вызова функции, другие для создания анонимного хеша:

convert({
    type => 'mpg',
    s => '480x270',
    r => 25,
    b => '512kb',
    ar => 22050,
});

Конечно, можно было бы вторые скобки не ставить вообще, а в функции принимать готовый хеш:

sub convert {
    my %param = @_;

Но тут возникает вопрос о том, как этому научить начинающего программиста. Конструкции вида %hash = @array не так просто понять в начале изучения языка, как это кажется после нескольких лет использования перла.

Хотя различие между следующими двумя строками схватывается на ура:

$a = @a;
($a) = @a;

1 комментарий

Можно вот так:
my %param = ( @_ );
Преобразование типа тут чуть более явное чем в вашем варианте :)

Хотя для начинающего программиста (если это не бывший Си-программер) "разыменование" - сложнее, ибо анахронизм, имхо :)

Комментировать

Страницы

  • img

Об этой записи

Сообщение опубликовано 22.10.2009 23:10. Автор — ash.

Предыдущая запись — PHP на перле

Следующая запись — Соль минор

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.