0

Erlang の case 文について質問です。

Web アプリケーション フレームワークとして n2o を使用しています。

サインイン ページで、ユーザーがサインアップ ボタンをクリックしたときにページからフィールドを抽出するイベントを作成しました。

event(sign_up) - >

Gender = {Male,Female} = {wf:q(gm),wf:q(gf)},

Result = case Gender of 
    Gender when Male == true -> <<"M">>;
    Gender when Female == true -> <<"F">>;
    Gender when Male == false, Female == false -> <<"Not Selected">>
end,

error_logger:info_msg("Stuff",[{Result}]).

ページをテストすると、ロギング コードがヒットすることはありません。caseステートメントを削除したときにのみ表示されます。奇妙なことに、シェルで case ステートメントを実行すると、正しく評価されます。

ケースステートメントに何か不足していますか?

4

3 に答える 3

2

フォーマットで何かを表示するには、フォーマット文字列内にプレースホルダー (ここでは ~p は pretty print を表します) が必要です。ケースステートメントも簡略化しました。

event(sign_up) - >

Gender = {wf:q(gm),wf:q(gf)},

Result = case Gender of 
    {true,false} -> <<"M">>;
    {false,true} -> <<"F">>;
    {false,false} -> <<"Not Selected">>;
%[edit] check the type of the return value of wf:q/1 if different from boolean
    Gender -> Gender
end,

error_logger:info_msg("Gender selection : ~p~n",[Result]).
于 2014-07-15T06:04:24.637 に答える