【发布时间】:2021-11-25 22:44:27
【问题描述】:
help("nse-force") 上的 {rlang} 文档提供以下内容:
函数参数的花括号运算符 {{ }} 有点特殊,因为它强制函数参数并立即将其化解。解析后的表达式被替换,准备在另一个上下文中进行评估,例如数据框。
我同样对“bang-bang”运算符!! 感到困惑,关于它的文档对于幕后发生的事情同样迟钝。
我的问题不是关于如何使用 运算符,因为它的用法(我认为)非常简单。相反,我想知道在幕后{rlang} 中如何实际实现这样的运算符。根据package authors之一,{{ foo }}基本上变成!!rlang::enquo(foo)。但是,我仍然无法理解像这样的非标准运算符实际上是如何实现的,特别是考虑到这个似乎“正常工作”,不管它是否被实际上它仅适用于由 {rlang} 支持的函数 - 感谢@Konrad Rudolph 的更正。{rlang} 函数。
看着the source code,我只能猜测它是用C 或C++ 完成的。谁能给我更多的信息?
【问题讨论】:
-
小评:我觉得标题有点含糊。我建议将问题从“X 如何工作?”中重命名。到“X是如何实现的?”。
-
好建议 - 谢谢!
标签: r tidyverse metaprogramming rlang nse