2013-06-06 13 views

Odpowiedz

13

"Moduł krotki" to krotka z dwoma elementami, nazwą modułu i listą dodatkowych argumentów. Na przykład:

{my_module, [foo, bar]} 

Tej krotki można użyć zamiast nazwy modułu w wywołaniach funkcji. W tym przypadku funkcja miano dostanie krotki w pytaniu jako dodatkowy argument na końcu listy argumentów:

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

To wywołanie jest równoważne:

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

moduły krotki są przechowywane ze względu na kompatybilność wsteczną, ponieważ były mechanizmem implementacji dla parameterised modules, które zostały usunięte z języka w R16.

+2

hum, spodziewałem się [foo, bar] jako wyniku końcowego – Isac

+1

Ja też, a więc mój wybór funkcji do testowania :) – legoscia

+1

Uwaga na przykład! Biblioteka standardowa nie nadaje się do tego wywołania, ponieważ ostatni argument wymienia całą krotkę z kwalifikacją modułu, która nie oczekuje modułów std jako "list" itd. Argumenty nie są wyodrębniane dla kompilatora pod uwagę. Może to być przydatne w przypadku nowych modułów takich jak to: https://github.com/comtihon/mongodb-erlang. – DenisKolodin