考虑一下这个功能:
App\Http\Middleware\Oauth2\HttpFoundationBridge\Request
由于只允许调用函数一次的约束(例如,它可能是一个昂贵的计算),我如何从函数调用中获取值并捕获消息(用于处理) ?我正在考虑在hello_world <- function() {
message("hello world")
"goodbye world"
}
电话的环境中缓存价值,但无法解决如何做到这一点。
以下是两个非示例:
tryCatch()
答案 0 :(得分:1)
以下是使用sink
的示例:
messageHandler <- function(fun, ...) {
zz <- textConnection("foo", "w", local = TRUE)
sink(zz, type = "message")
res <- fun(...)
sink(type = "message")
close(zz)
#handle messages
list(res, messages = foo)
}
messageHandler(hello_world)
#[[1]]
#[1] "goodbye world"
#
#$messages
#[1] "hello world"
hello_world2 <- function() {
message("hello world")
message("how are you")
"goodbye world"
}
messageHandler(hello_world2)
#[[1]]
#[1] "goodbye world"
#
#$messages
#[1] "hello world" "how are you"
请注意,这也会捕获来自stop
的警告和消息,即发送到stderr()
的所有内容。