сохранить сигнатуру исходной функции?
Например:
my_f <- function(x, y) {
(x + y)^2L
}
with_log <- function(fn) {
function(...) {
message("called at ", Sys.time())
fn(...)
}
}
my_f2 <- with_log(my_f)
при использовании my_f2 будет сигнатура function(...) и IDE подсказки давать, например не будет
duck debugging сработал, отвечу сам :)) with_log <- function(fn) { fn_out <- function(...) { message("called at ", Sys.time()) fn(...) } formals(fn_out) <- formals(fn) fn_out }
злостное колдунство))
На что только не пойдешь чтобы варнинг из R CMD CHECK убрать
ха, кстати.)) Но идея с подсказками в ide звучит более убедительной, чтобы это использовать, так что сохранил себе))
А вот нет, не всё так просто. Использование ... в оборачиваемой функции сломает всё. Надо так. with_log <- function(fn) { fn_out <- function(...) { message("called at ", Sys.time()) do.call(fn, as.list(match.call())[-1L]) } formals(fn_out) <- formals(fn) fn_out }
Обсуждают сегодня