Volatiles和vswap!作为在语言中实现无协调突变的高效机制被添加到1.7版本中。
鉴于其添加侧重于性能,vswap!被实现为宏而不是常规函数,以避免运行时函数var的解引用以及可选的多个参数时的apply开销。
但是这个
-是不必要的
-打破了volatile/atom swap!/vswap! reset!/vreset!之间的API并行性
-使得某些用法(在update-in形式中的vswaps!)变得不可能
-可能会混淆,因为swap!是一个函数
实际上,该宏可以替换为具有:inline元数据的函数。
这是一个严格添加性的更改,将保证对于所有当前的vswap!有效用途,没有任何变化,它仍然会被内联器宏展开,并且由于它现在是一个函数,它可以在通常看到swap!使用的HOF上下文中使用。