Erlang:函数参数修饰的运行时开销?

时间:2009-12-01 16:15:09

标签: erlang

如果我使用这种装饰会有运行时间开销吗?

get_next_state(_SPid=undefined, _NextPort=undefined) ->
    stop;

2 个答案:

答案 0 :(得分:3)

不,没有开销。您可以检查是否制作了带有和不带装饰的虚拟模块,并使用“S”标志进行编译。

答案 1 :(得分:1)

这不是装饰,而是别名。它允许你吃蛋糕并吃它。你可以都有一个像往常一样匹配的模式,并且有一个变量,它与术语的相应部分绑定。所以在

foo([a,b,c|_]=List) -> ... .

会将列表与前3个元素abc匹配,并将List绑定到整个列表。它可以在模式中的任何位置使用,并且非常有用,因为它可以帮助您避免重建术语。使用它作为一种评论形式是没有问题的,但老实说,我没有看到它的重点,它只是凌乱不堪。我会把你的例子写成

%% get_next_state(SPid, NextPort) -> ... .

get_next_state(undefined, undefined) ->
    stop;