假设calculation.123是我的核心代码:
calculation.123 <- function(x){
tmp1 <- x*x
tmp2 <- x+1
tmp3 <- 4*x
return(list(tmp1, tmp2, tmp3))
}在上述情况下,如何重构只输出tmp2和tmp3停止tmp1的calculation.123
我想保留calculation.123的原始结构。这意味着需要对calculation.123使用包装函数:
wrap.calculation.123 <- function(x){
tmp <- list()
tmp <- x[2:3]
return(tmp)
}因此:
wrap.calculation.123(calculation.123(4))有没有办法通知calculation.123,只要不创建包装器tmp1,就不要通过它的参数输入输出wrap.calculation.123 (或者任何请建议的方式)
重构概念相对较新;重构对这篇文章来说是正确的吗?
谢谢
发布于 2018-09-28 16:23:31
有多种方法可以做到这一点。我建议使用一个标志来指示是否要包含tmp1。所以像这样,
calculation.123 <- function(x, halt_tmp1 = FALSE){
tmp2 <- x+1
tmp3 <- 4*x
if (!halt_tmp1) {
tmp1 <- x*x
return(list(tmp1, tmp2, tmp3))
}
return(list(tmp2, tmp3))
}
calculation.123(4, TRUE)
#[[1]]
#[1] 5
#[[2]]
#[1] 16
calculation.123(4)
#[[1]]
#[1] 16
#[[2]]
#[1] 5
#[[3]]
#[1] 16,它也类似于
calculation.123(4, FALSE)https://stackoverflow.com/questions/52551128
复制相似问题