首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过暂停函数的特定返回进行重构

通过暂停函数的特定返回进行重构
EN

Stack Overflow用户
提问于 2018-09-28 16:16:10
回答 1查看 37关注 0票数 2

假设calculation.123是我的核心代码:

代码语言:javascript
复制
calculation.123 <- function(x){
 tmp1 <- x*x
 tmp2 <- x+1
 tmp3 <- 4*x
return(list(tmp1, tmp2, tmp3))
}

在上述情况下,如何重构只输出tmp2tmp3停止tmp1calculation.123

我想保留calculation.123的原始结构。这意味着需要对calculation.123使用包装函数:

代码语言:javascript
复制
wrap.calculation.123 <- function(x){
tmp <- list()
tmp <- x[2:3]
return(tmp)
}

因此:

代码语言:javascript
复制
wrap.calculation.123(calculation.123(4))

有没有办法通知calculation.123,只要不创建包装器tmp1,就不要通过它的参数输入输出wrap.calculation.123 (或者任何请建议的方式)

重构概念相对较新;重构对这篇文章来说是正确的吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-09-28 16:23:31

有多种方法可以做到这一点。我建议使用一个标志来指示是否要包含tmp1。所以像这样,

代码语言:javascript
复制
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

,它也类似于

代码语言:javascript
复制
calculation.123(4, FALSE)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52551128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档