的{rlang}
文档help("nse-force")
提供了以下内容:
用于函数参数的花括号运算符 {{ }} 有点特殊,因为它强制函数参数并立即将其化解。解析后的表达式被替换,准备在另一个上下文中进行评估,例如数据框。
我同样对 'bang-bang' operator 感到困惑!!
,关于它的文档对于幕后发生的事情同样迟钝。
我的问题不是关于如何使用运算符,因为它的用法(我认为)非常简单。相反,我想知道如何在{rlang}
幕后实际实现这样的运算符。根据其中一位包作者的说法,{{ foo }}
基本上变成了!!rlang::enquo(foo)
. 但是,我仍然无法理解像这样的非标准运算符是如何实际实现的,特别是考虑到这个似乎“正常工作”,无论它是否被实际上它只适用于由 {rlang} 支持的功能 - 感谢@Konrad Rudolph 的更正。{rlang}
函数使用。
查看源代码,我只能猜测它是用 C 或 C++ 完成的。谁能给我更多信息?