私は現在アーランをコーディングすることを学んでいます。シカゴ・ボスの上にWebアプリケーションがあります。 私はTodoというモデルを持っていますが、CRUD操作をREST APIとして提供したいと思います。私のPUTメソッドでこれをどのように最適化できますか?
私はこのコードを持っている:
index('PUT', [Id]) ->
Todo = boss_db:find(Id),
Body = element(2, mochijson:decode(Req:request_body())),
%% Set the new values
NewTodo = Todo:attributes([
{subject, proplists:get_value("subject", Body)},
{done, proplists:get_value("done", Body)}
])
,
{json, [{todo, element(2, NewTodo:save())}]}.
は、どのように私はこのコードフラグメントを最適化することができますか?または、これはすでに最高の可能性がありますか?
プロプリストのキーをアトム・キーに変更するには、「よりスマートな」方法がありますか?このように:
[{"subject", "Foo"}] -> [{subject, "Foo"}].
私はTodo変数を割り当ててからNewTodoを持つのも面倒です。悲しいことに、私がチェックアウトできるgithubでErlang Chicago Bossのアプリを見つけられません。それはあなたのケースでは大幅な速度改善となり、
t([{"subject", V}|T]) -> [{subject, V}|t(T)];
t([{"done" , V}|T]) -> [{done, V}|t(T)];
t([_ |T]) -> t(T) ; % optional garbage ignoring clause
t([]) -> [].
しかし、私は疑問:
何故element()関数は何をしますか?私はこれに新しいです。 :) –