Erlang:很多案例......

Not*_* ID 3 erlang

在erlang中,我经常编写如下代码:

case A of
    A1 ->
        something_simple_1;
    A2 ->
        case B of
            B1 ->
                something_simple_2;
            B2 ->
                case C of
                    C1 ->
                        something_simple_3;
                    C2 ->
                        ...
                end
        end
end
Run Code Online (Sandbox Code Playgroud)

这很丑,怎么能避免这种情况?

Ale*_*nov 5

case {A, B, C} of
    {A1, _, _} -> 
        something_simple_1;
    {A2, B1, _} ->
         something_simple_2;
    {A2, B2, C1} ->
         something_simple_3;
    {A2, B2, C2} ->
    ...
end
Run Code Online (Sandbox Code Playgroud)

请注意,这不允许您例如避免计算C何时不需要它; 更普遍适用的方法只是提取功能.