当输入改变接收的消息类型时,避免在“接收”中重复代码

时间:2016-04-21 13:59:53

标签: erlang

我希望能够编写一个函数,当它的输入处于某种无效状态时(假设它是一个整数,无效意味着-1),它接收带有任何信息的消息,但是当它的输入有效时,它只接收与其输入相同类型的消息。例如,这可能是一个可能的解决方案:

f(-1) ->
    receive
        ...
        {a, AnyInput} ->
            % Do something
        ...
    end

f(ValidInput) ->
    receive
        ...
        {a, ValidInput} ->
            % Do something
        ...
    end

这里主要关注的是重复代码,因为接收包含大量的,否则相同的代码(同一个接收中还有许多其他消息类型)。

有没有可以帮助我的编码模式?

我也可以自由地将无效状态设置为任何值,包括undef,如果这样做有帮助的话。

1 个答案:

答案 0 :(得分:2)

{{1}}