El estilo foo(a => 1, b => 2)
es la forma habitual de emular argumentos con nombre. El bar({a => 1, b => 2})
se usa generalmente solo para argumentos suplementarios (y posiblemente opcionales).
Para el uso típico, prefiero el primer formulario. Los {}
son de tipeo extra, ruido extra para leer y crean un posible error si omites alguno o ambos tirantes. Cualquier diferencia de rendimiento es insignificante. (Si no es así, tienes problemas mayores). Por otro lado, envolver los argumentos en un constructor de hash anónimo puede ayudarte a encontrar errores en tiempo de compilación en lugar de en tiempo de ejecución.
La segunda forma se ve típicamente mezclada con argumentos posicionales. p.ej.Benchmark hace esto:
cmpthese(10000, {
foo => \&foo,
bar => \&bar,
});
Mientras Tk deja el {}
a cabo:
my $text = $w->Scrolled('Text', -width => 80, -height => 50);
Por lo general es una opción estilística.
+1 para señalar los aspectos de rendimiento. –
Estos "aspectos de rendimiento" son micro-optimizaciones innecesarias que no producen ningún beneficio práctico. Un hash se puede usar tan fácilmente como una lista: 'foo (% hash)' o un hashref: 'foo (% {$ hashref})'. Seguir con el estilo foo deja más poder para el usuario. – jmz
En realidad, mi propia evaluación comparativa ha demostrado (en varias instalaciones) que es más rápido pasar listas que referencias, aunque parece más rápido * devolver * referencias. – Axeman