可变性(volatile)和vswap!是在1.7版中加入的,作为实现语言无协调性突变的高效机制。
由于她们的加入是以性能为中心的,vswap!被实现为一个宏而并非常规函数,以避免函数var的运行时解引用以及在多个参数情况下的可选应用开销。
然而这
-是不必要的
-打破了volatile/atom swap!/vswap! reset!/vreset!之间的api并行性
-使得某些使用场景变得不可能(update-in形式中的vswaps!)
-会有潜在混淆,因为swap!是一个函数
实际上,该宏可以用具有:inline元数据的函数替换。
这是一个严格增加的改变,将使得对于所有当前有效的vswap!用法,都不会发生变化,它仍然会被内联器宏展开,而且由于现在是一个函数,它可以在HOF上下文中使用,而其中swap!的使用并不罕见。