あなたが言及した主題で、私はコードをテストしなかったと言いました、そしてもちろん構文エラーがありました。これが実行されるコードです。
1> ok = mnesia:create_schema([node()]).
ok
2> rd(my_user,{firstname,lastname,age}).
my_user
3> ok =application:start(mnesia).
ok
4> {atomic,ok} = mnesia:create_table(my_user,[{attributes,record_info(fields,my_user)},{disc_copies,[node()]},{type,bag}]).
{atomic,ok}
5> Add_user = fun(Fn,Ln,Ag) ->
5> F = fun() -> mnesia:write(my_user,#my_user{firstname=Fn,lastname=Ln,age=Ag},write) end,
5> mnesia:activity(transaction,F)
5> end.
#Fun<erl_eval.18.82930912>
6> ok = Add_user("Georges","Boy",25).
ok
7> ok = Add_user("Joe","Armstrong",52).
ok
8> ok = Add_user("Pascal","Me",55).
ok
9> F = fun(T) -> mnesia:foldl(fun(X,Acc) -> [X|Acc] end, [],T) end.
#Fun<erl_eval.6.82930912>
10> {atomic,L} = mnesia:transaction(F,[my_user]).
{atomic,[#my_user{firstname = "Pascal",lastname = "Me",
age = 55},
#my_user{firstname = "Joe",lastname = "Armstrong",age = 52},
#my_user{firstname = "Georges",lastname = "Boy",age = 25}]}
11> ok = file:write_file("test.txt",[io_lib:format("~p\t~p\t~p~n",[F1,F2,F3]) || #my_user{firstname = F1, lastname = F2, age = F3} <- L]).
ok
12>
作業ディレクトリに test.txt という名前のファイルが作成されます。
"Pascal" "Me" 55
"Joe" "Armstrong" 52
"Georges" "Boy" 25
これをエクセルで開くと、
しかし、これは直接使用すべきコード シーケンスではありません。
- 1 行目は、アプリケーションの展開に使用するコードで実行する必要があります。
- 行 2 は、シェルが次の行を理解するために必要なレコード定義です。モジュールまたはインクルード ファイルでは、-record(...) に置き換える必要があります。
- 3 行目と 4 行目は、上位レベルのスーパーバイザーのいずれかの init 関数で実行する必要があります (既に開始されているアプリケーション、既存のテーブルをチェックするためのテストを行います...)
- 5行目はサーバーのインターフェース定義にある必要があります
- 行 6、7、8 は、一部のクライアントのユーザー インターフェイスによって生成される必要があります。
- 別のインターフェイスの最後の行 9,10,11 (管理者用?)。
Lost_with_coding と仲間たちへのメッセージ
私があなたに私の意見を言うなら、あなたは燃えているステップです。Erlang の構文、パターン マッチングの概念、および変数境界をマスターすることに集中する必要があります。その後、リストやバイナリ内包表記などのより高度な構造を検討する必要があります。時間をかけてエラー メッセージを確認し、それらを使用して簡単な問題を解決してください。公式の Erlang ドキュメントは、この目的に最適です。私はいつもブラウザで開いており、知らない機能を探すときにこのリンクhttp://erldocs.com/R15B/を使用することもあります。
次に、高次関数、エラー処理、プロセス、同時実行性、OTP... に加えて、効率的ではあるが魅力的ではない Erlang ツール (tv、appmon、デバッガー...) の使用について説明します。
私は非常によくお勧めしますが、素晴らしい Fred Hebert の Web サイトhttp://learnyousomeerlang.com/を使用し、コピー/貼り付けではなくコードを書き直して、手順に従ってください。それは本当に努力する価値があります。