Стиль foo(a => 1, b => 2)
— это обычный способ эмуляции именованных аргументов. bar({a => 1, b => 2})
обычно используется только для дополнительных (и, возможно, необязательных) аргументов.
Для типичного использования я предпочитаю первую форму. {}
— это лишний набор текста, лишний шум при чтении и создание возможной ошибки, если вы пропустите одну или обе фигурные скобки. Любая разница в производительности незначительна. (Если это не так, у вас большие проблемы.) С другой стороны, помещение аргументов в анонимный хэш-конструктор может помочь вам найти ошибки во время компиляции, а не во время выполнения.
Вторая форма обычно встречается в сочетании с позиционными аргументами. например Бенчмарк делает это:
cmpthese(10000, {
foo => \&foo,
bar => \&bar,
});
В то время как Tk оставляет {}
вне:
my $text = $w->Scrolled('Text', -width => 80, -height => 50);
Обычно это стилистический выбор.
person
Michael Carman
schedule
30.07.2010