12
如果我們查看在參數列表中有點...
的函數的主體,我們通常可以找到接收這些點參數的函數。缺失點(`...`)在哪裏得到處理?
例如,我們可以在sapply()
的主體中看到點參數被傳遞到lapply()
。
sapply
# function (X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)
# {
# FUN <- match.fun(FUN)
# answer <- lapply(X = X, FUN = FUN, ...)
# ## rest of function body
# }
# <bytecode: 0x000000000e05f0b0>
# environment: namespace:base>
然而,在lapply()
,還有點...
參數列表,但不函數體。
lapply
# function (X, FUN, ...)
# {
# FUN <- match.fun(FUN)
# if (!is.vector(X) || is.object(X))
# X <- as.list(X)
# .Internal(lapply(X, FUN))
# }
# <bytecode: 0x0000000009414f08>
# <environment: namespace:base>
那麼,做lapply()
點...
論點得到處理?什麼/他們在哪裏傳遞給?我們不能將它們傳遞給match.fun()
。我認爲它們被傳遞到.Internal()
,但是當我沒有看到它們被傳入函數體中的任何函數時,我看不出有什麼理由讓它工作。