2012-11-28 5 views

risposta

12

/1,/2,/3, ecc sono indicati come la "Arity" della funzione, Arity cioè il numero di argomenti accettati da quella funzione.

In Erlang, due funzioni con lo stesso nome ma con aritmetria diversa sono due funzioni diverse e, come tali, vengono esportate in modo esplicito.

Ad esempio, se si hanno due funzioni:

do_something() -> does_something(). 

do_something(SomeArg) -> some_something_else(SomeArg). 

e nella parte superiore del modulo, si aveva solo

-export([do_something/0]). 

Poi solo il fa_qualcosa con zero argomenti sarebbe essere esportato (che è accessibile da altri moduli nel sistema).

+0

grazie! Se ho 3 funzioni con lo stesso nome ma con un diverso set di parametri (2,3,4), quando esporto/4 - significa che verranno esportate anche le funzioni con arità inferiore? – DmitrySemenov

+1

In realtà no. Devi esportare ciascuna versione della funzione separatamente. Quindi, se volessi esportare tutte le versioni di quella funzione (con le aree 2 e 4), dovresti fare '-export ([funzione/2, funzione/3, funzione/4]).' – chops

+0

ottenuto grazie! – DmitrySemenov

1

È la firma della funzione.

consult/1 significa che la funzione denominata consult accetta un argomento. dump/2 significa che la funzione dump accetta due argomenti.

Consultare il documentation per ulteriori informazioni