在函数中使用全局变量而不是return
是否合适?如果没有,为什么?
mysum <- function(a, b) {
c <<- a + b
}
或
mysum <- function(a, b){
c <- a + b
return(c)
}
答案 0 :(得分:1)
使用像您在第一个替代方案中所做的全局变量在编程圈中被称为“副作用”(请参阅讨论的一些链接的注释)。令人不悦的是,一个令人信服的理由是,它使您很难单独理解您的程序,并且很难在其他地方重用该代码。
第二种方法当然是首选方法,也就是“返回”语句的重点。人们倾向于首选的主要原因之一是,在另一方面,似乎很难返回多个值。然而,这可以通过各种方式实现,也许最简单的方法是使用如下列表:
mysumdiff <- function(a,b){
rv <- list(sum=a+b,diff=a-b)
return(rv)
}
msd <- mysumdiff(3,4)
print(sprintf("sum: %d diff:%d",msd$sum,msd$diff))