on.exit的示例,add参数

时间:2012-06-11 00:38:16

标签: r

有人能为我提供一个简单的用例,其中on.exit()函数“add”参数为true?

2 个答案:

答案 0 :(得分:8)

这是一个非常简单的例子

myfun <- function(x){
    on.exit(print("first"))
    on.exit(print("second"), add = TRUE)
    return(x)
}

myfun(2)
#[1] "first"
#[1] "second"
#[1] 2

还要注意没有add = TRUE参数

会发生什么
fun <- function(x){
    on.exit(print("first"))
    on.exit(print("second"))
    return(x)
}

fun(2)
#[1] "second"
#[1] 2

如果你不添加“add = TRUE”,第二次调用on.exit将删除第一个调用。

答案 1 :(得分:0)

我不知道R但是阅读the definition of onexeitadd = true确保除了先前存储的onexit experssions之外还评估第一个表达式,而add = false覆盖前一个表达式。

所以环顾四周,我在jhsph.edu上找到了这个:

基本上确保tmp也已关闭,退出时file

readData2 <- function(file, ...) {
        file <- file(file, "r")
        on.exit(close(file))

        tmp <- tempfile()
        tmpcon <- file(tmp, "w")

        on.exit(close(tmpcon), add = TRUE)

        incomment <- FALSE

        while(length(line <- readLines(file, 1)) > 0) {
                .
                .
                . ommited in SO example
                .
                .
                .
        }
        close(tmpcon)
        close(file)
        on.exit()

        read.csv(tmp, ...)
}