了解 Advanced R 中的惰性求值示例

Understanding the lazy evaluation example in Advanced R

我正在尝试理解 Hadley Wickham 教授的 Advanced R 中的惰性求值示例。Question 有人询问了 adder 函数示例。我的问题是关于另一个例子。为什么下面代码的输出是"a" "x"?为什么那里有一个"x"?如果 x 仅在第 [3] 行计算,它如何包含自身?

[1] f <- function(x = ls()) {
[2]   a <- 1
[3]   x
[4] }
[5] f()

由于x是函数的一个参数,它是在函数为运行时定义的。当您在函数中 运行 ls() 时,所有参数都会显示出来。变量可以在求值之前存在。