2013-06-06 14 views

risposta

13

Un "modulo tupla" è una tupla con due elementi, il nome di un modulo e un elenco di argomenti aggiuntivi. Ad esempio:

{my_module, [foo, bar]} 

Tale tupla può essere utilizzata al posto del nome di un modulo nelle chiamate di funzione. In questo caso, la funzione chiamata otterrà tupla in questione come parametro aggiuntivo alla fine dell'elenco di argomenti:

3> Module = {lists, [[foo]]}. 
{lists,[[foo]]} 
4> Module:append([bar]). 
[bar|{lists,[[foo]]}] 

Questa chiamata è equivalente a:

7> lists:append([bar], {lists, [[foo]]}). 
[bar|{lists,[[foo]]}] 

moduli Tuple sono mantenute per compatibilità con le versioni precedenti, in quanto erano il meccanismo di implementazione per parameterised modules, che sono stati rimossi dalla lingua in R16.

+2

ronzio, mi aspettavo [foo, bar] come risultato finale – Isac

+1

Anch'io, quindi la mia scelta di funzione per i test :) – legoscia

+1

Attenzione ad esempio! La libreria standard non si adatta a questa chiamata, poiché l'ultimo argomento è sempre l'intera tupla con la qualifica del modulo, che non è prevista dai moduli std come 'lists' ecc. Gli argomenti non estratti per il compilatore considerano l'arity. Questo può essere utile con nuovi moduli come questo: https://github.com/comtihon/mongodb-erlang. – DenisKolodin

Problemi correlati