我理解,R语言中编写函数的常规方法是避免副作用(side-effects),并从函数返回一个值。
contained <- function(x) {
x_squared <- x^2
return(x_squared)
}
在这种情况下,函数计算输入值并返回结果。但是变量x_squared
不可用。
但是,如果您需要违反这个基本的函数式编程原则(我不确定R语言对此问题有多严重),从函数中返回一个对象,您有两个选择。
escape <- function(x){
x_squared <<- x^2
assign("x_times_x", x*x, envir = .GlobalEnv)
}
两个对象x_squared
和x_times_x
都被返回。是否有一种方法比另一种更好,为什么?
<<-
会有恶意应用,这个正确性和良好性的示例帮助澄清了这个问题。Lumley先生加一分。 - Milktrader