Lo stile foo(a => 1, b => 2)
è il solito modo di emulare argomenti denominati. Il bar({a => 1, b => 2})
viene in genere utilizzato solo per argomenti supplementari (e eventualmente facoltativi).
Per l'utilizzo tipico, preferisco il primo modulo. Il {}
è una digitazione aggiuntiva, un rumore extra da leggere e crea un possibile errore se si omette una o entrambe le parentesi. Qualsiasi differenza di prestazioni è trascurabile. (Se non lo è, hai problemi più grandi.) D'altra parte, il wrapping degli argomenti in un costruttore di hash anonimo può aiutarti a trovare errori in fase di compilazione piuttosto che in runtime.
Il secondo modulo viene in genere visualizzato in combinazione con argomenti posizionali. per esempio.Benchmark fa questo:
cmpthese(10000, {
foo => \&foo,
bar => \&bar,
});
Mentre Tk lascia l'{}
out:
my $text = $w->Scrolled('Text', -width => 80, -height => 50);
Di solito è una scelta stilistica.
fonte
2010-07-30 13:37:14
+1 per sottolineare gli aspetti prestazionali. –
Questi "aspetti di prestazione" sono micro-ottimizzazioni non necessarie che non apportano alcun vantaggio pratico. Un hash può essere usato facilmente come un elenco: 'pippo (% hash)' o un hashref: 'pippo (% {$ hashref})'. Attaccare con lo stile foo lascia più potere all'utente. – jmz
In realtà, il mio benchmarking ha mostrato (su più installazioni) che è più veloce passare le liste che i riferimenti - anche se sembra più veloce ai riferimenti * return *. – Axeman