Create a new "with" or "local" function
These are constructors for with_...
or local_...
functions.
They are only needed if you want to alter some global state which is not
covered by the existing with_...
functions, see withr
for an overview.
local_(set, reset = set, envir = parent.frame(), new = TRUE, dots = FALSE) with_(set, reset = set, envir = parent.frame(), new = TRUE)
set |
|
reset |
|
envir |
|
new |
|
The with_...
functions reset the state immediately after the
code
argument has been evaluated. The local_...
functions
reset their arguments after they go out of scope, usually at the end of the
function body.
[function(new, code, ...)]
A function with at least two arguments,
new
: New state to use
code
: Code to run in that state.
If there are more arguments to the function passed in set
they are
added to the returned function. If set
does not have arguments,
or new
is FALSE
, the returned function does not have a code
argument.
with_(setwd) global_stack <- list() set_global_state <- function(state, msg = "Changing global state.") { global_stack <- c(list(state), global_stack) message(msg) state } reset_global_state <- function(state) { old_state <- global_stack[[1]] global_stack <- global_stack[-1] stopifnot(identical(state, old_state)) } with_(set_global_state, reset_global_state)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.