为什么任务回调“可见”值为FALSE?

时间:2013-11-01 12:03:00

标签: r callback

documentation for Top-level Task Callbacks in R中,会向回调发送四个参数:exprvalueokvisible。这些大多有意义。但visible定义为:

  

是否打印了任务的输出。

我将此解释为当visible==TRUE输出到控制台(或任何地方)并且visible==FALSE没有输出到控制台时的含义。

问题:当使用visible==TRUEcat时,我希望print因为有可见的输出。但在这些情况下,visible参数实际上是FALSE

示例:

addTaskCallback(function(expr,value,ok,visible) {cat(visible,'\n'); TRUE}, name='ex')
1 # makes sense, something is printed
x <- 1 # makes sense, nothing is printed
x # makes sense, something is printed
print(x) # ???
cat(x) # ???

removeTaskCallback('ex') # cleanup

最后两个例子中不应该visibleTRUE吗?如果没有,为什么?

1 个答案:

答案 0 :(得分:2)

我相信visible是指打印函数中的返回值,而不是函数是否在执行期间打印任何内容。请注意,大多数print方法实际上以invisible()调用结束,以无形地返回打印对象。同样,cat的打印输出与其返回值不同,后者无形NULL