MWE:
f1 <- function(x, y = x) {
str(y)
x <- x + 1
y }
f1(1) # result is 1
f2 <- function(x, y = x) {
x <- x + 1
y }
f2(1) # result is 2
为什么会这样?我尝试使用pryr库进行调试,但是看不到正在更新的引用。
答案 0 :(得分:2)
懒惰评估。它与conda list
的评估时间有关。在使用y = x
的第一条语句之前对它进行求值。
y