我为 R 编写了一个二元运算符函数(即一个具有类似名称的函数,这样我就可以使用更方便的语法%X%
而不是键入。我的目标是有一个包装器来执行诸如记录对其中的对象所做的事情之类的事情环境并检查“受保护”属性,该属性会在覆盖该对象之前警告用户。%X%(a,b)
a %X% b
<-
所有这些都有效,除了如果我尝试在函数内部做一些事情a %X% b + c
,你所看到的就是a %X% b
_ 而这也是它所做的一切;a 被赋予 b 的值,而 c 被完全忽略。a %X% (b + c)
有效,%X%(a, b + c)
但将其编写为二元运算符的全部目的是避免括号。
如果我覆盖<-
,它sys.call()
会看到它左右两侧的所有内容。为什么我的只能从命令行看到相邻的名称?
这是复制此问题的代码:
`%X%` <- function(...){
print(deparse(sys.call()));
}
a %X% 3 + 1:10;
期望的结果是“a %X% 3 + 1:10” 观察到的结果是“a %X% 3”
谢谢。