2013-06-06 2 views

答えて

13

"タプルモジュール"は、モジュール名と余分な引数のリストという2つの要素を持つタプルです。例えば:

{my_module, [foo, bar]} 

このようなタプルは、関数呼び出し、モジュール名の代わりに使用することができます。この場合、呼び出される関数は、引数リストの最後に追加の引数として問題のタプルを取得します:

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

この呼び出しは同等です:

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

タプルモジュールが保存されています下位互換性のために、R16の言語から削除されたparameterised modulesの実装メカニズムであったためです。

+2

ハム、私は最終結果として[foo、bar]を期待していた – Isac

+1

私もテストのための機能の私の選択:) – legoscia

+1

注意の例!最後の引数は、モジュールの修飾を持つタプル全体を覚えているので、標準ライブラリはこの呼び出しには適していません。これは、stdモジュールが 'リスト 'として期待していないものです。これは、次のような新しいモジュールで役に立ちます:https://github.com/comtihon/mongodb-erlang。 – DenisKolodin

関連する問題