env_bury() is like env_bind() but it creates the bindings in a new child environment. This makes sure the new bindings have precedence over old ones, without altering existing environments. Unlike env_bind(), this function does not have side effects and returns a new environment (or object wrapping that environment).

env_bury(.env, ...)

## Arguments

.env An environment or an object bundling an environment, e.g. a formula, quosure or closure. This argument is passed to get_env(). Pairs of names and expressions, values or functions. These dots support splicing (with varying semantics, see above) and name unquoting.

## Value

A copy of .env enclosing the new environment containing bindings to ... arguments.

env_bind(), env_unbind()

## Examples

orig_env <- env(a = 10)
fn <- set_env(function() a, orig_env)

# fn() currently sees a as the value 10:
fn()#> [1] 10
# env_bury() will bury the current scope of fn() behind a new
# environment:
fn <- env_bury(fn, a = 1000)
fn()#> [1] 1000
# Even though the symbol a is still defined deeper in the scope:
orig_env\$a#> [1] 10