volatile 和 vswap! 平台在 1.7 版本中添加,作为高效机制以获得语言的不协调突变。
由于这种添加主要关注性能,vswap! 被实现为一个宏而不是普通函数,以避免在运行时解引用函数 var,并避免在具有多个参数的情况下的可选 apply 负担。
但是这
-是多余的
-打破了 volatile / atom swap! / vswap! reset! / vreset! 之间的 API 平行性
-使得某些使用场景(在 update-in 表达式中的 vswaps!)成为不可能
-由于 swap! 是一个函数,因此可能引起混淆
事实上,这个宏可以用具有 :inline 元数据的函数替换。
这是一个严格增量更改,将确保对于 vswap! 的所有当前有效使用,没有任何变化,它仍将由内联器宏展开,并且由于现在它是一个函数,它可以在通常看到 swap! 使用的 HOF 环境中使用。