【发布时间】:2011-06-30 07:10:52
【问题描述】:
从性能(或任何其他)角度来看,这两者之间有什么区别?
f1(X=whatever) -> 好的; (更多...)
和
f2(whatever=X) -> 好的; (更多...)
【问题讨论】:
-
为什么使用赋值作为模式匹配表达式?这非常令人困惑。你不是说“f1() when X = 不管”吗?
-
Erlang 中的赋值是与未绑定变量进行模式匹配的效果——至少对我来说并不令人困惑。
-
我在参数中使用赋值的原因是我可以稍后在代码中使用分配的变量。上面的代码太简单了,无法显示,但如果我在一些复杂的列表或元组上匹配,我可以稍后使用分配的变量,而不是输入复杂的结构。我的假设是引擎将在复杂结构上进行模式匹配,而不是变量(这是我想要的)。我的问题是这是否正确,即上面是否总是匹配原子“whatever”(我想要的)或者它有时是否匹配 X。
标签: performance erlang matching