2012年1月21日土曜日

Erlang io:format デバッグ 可変引数

Erlangには、可変引数がないみたい。検索に引っかからない。
どうにか、デバッグ(io:format)で可変引数っぽくできないかと考え、作ってみた。

■ソース

-module(va_args).
-export([start/0]).
-define( LOG( Fmt, Args ), io:format( Fmt, Args ) ).
-define( LOG2( Fmt, Args ), io:format( "~p:~p " Fmt, [ ?MODULE, ?LINE ] ++ Args ) ).

start() ->
        ?LOG( "~p~n", [test] ),
        ?LOG2( "~p~n", [test2] ).

■実行結果

C:\Users\andre\ework>erlc va_args.erl

C:\Users\andre\ework>erl -noshell -run va_args start -run init stop
test
va_args:8 test2


引数にフォーマットとリスト渡せば、可変引数として使える。

なぜ、デバッグでio:format?と思われるかもしれないが、まだ技術力が足りないせいである。