2011-11-28 85 views
9

我经历“务实编程二郎”里有这样定义的函数:Erlang:哪种模式匹配更有效率(列表)?

split("\r\n\r\n" ++ T, L) -> {reverse(L), T}; 
split([H|T], L) -> split(T, [H|L]); 
split([], _) -> more. 

我感兴趣的是第一场比赛,即"\r\n\r\n" ++ T - 有这样一个模式,一个类似之间的性能差异,我想出了:[13,10,13,10|T]?或者它们是否相同?

我知道这是非常简单的问题,我可以(可能)自己检查它,但如果有差异,我想知道为什么是这种情况。

谢谢!

回答

8

"\r\n\r\n" ++ T只是语法糖为[13,10,13,10|T]。它应该执行相同的。如果没有错的话;-)

+0

我以为也许'L1 ++ L2'在某种程度上是不同的,因为我找不到一种方式将它转换为'cons'es,当使用时如此:'T ++ “\ r \ n” - 但感谢你的回答,我再次想到,我意识到这是可能的,尽管有点冗长。谢谢! – cji

+0

'T ++“\ r \ n”'不能转换为conses,所以不能用于模式匹配。 –