从性能(或任何其他)角度来看,这两者之间有何不同?
f1(X =无论如何) - >好; (更多...)
和
f2(无论= X) - >好; (更多...)
答案 0 :(得分:4)
您可以通过使用-S编译生成.S文件来检查编译器生成的代码。你会得到这样的东西,你可以确认编译器为你的两个案例中的每一个生成完全相同的代码。
{function, f1, 1, 12}.
{label,11}.
{func_info,{atom,test},{atom,f1},1}.
{label,12}.
{test,is_eq_exact,{f,11},[{x,0},{atom,whatever}]}.
return.
就个人而言,我发现“无论什么= X”反直觉且难以阅读。
答案 1 :(得分:1)
模式中的=
表示LHS和RHS是别名,指的是数据相同的值。双方必须匹配该值,因此写入{X}=[Y]
的内容将永远不会匹配(并且编译器会抱怨)。它最常用于{X,Y}=T
,它允许您匹配和拉开数据和仍然具有对整个结构的引用。两者都有你的蛋糕和吃它。请注意,它可以在模式中的任何位置使用,而不仅仅是在顶层,因此您可以像{foo,[H|T]=A,B,C}
一样使用它。
没有性能差异。