Experimental lifecycle

Locked environment bindings trigger an error when an attempt is made to redefine the binding.

env_binding_lock(env, nms = NULL)

env_binding_unlock(env, nms = NULL)

env_binding_are_locked(env, nms = NULL)



An environment.


Names of bindings. Defaults to all bindings in env.


env_binding_are_unlocked() returns a logical vector as long as nms and named after it. env_binding_lock() and env_binding_unlock() return the old value of env_binding_are_unlocked() invisibly.

See also

env_lock() for locking an environment.


# Bindings are unlocked by default: env <- env(a = "A", b = "B") env_binding_are_locked(env)
#> a b #> FALSE FALSE
# But can optionally be locked: env_binding_lock(env, "a") env_binding_are_locked(env)
#> a b #> TRUE FALSE
# If run, the following would now return an error because `a` is locked: # env_bind(env, a = "foo") # with_env(env, a <- "bar") # Let's unlock it. Note that the return value indicate which # bindings were locked: were_locked <- env_binding_unlock(env) were_locked
#> a b #> TRUE FALSE
# Now that it is unlocked we can modify it again: env_bind(env, a = "foo") with_env(env, a <- "bar")
#> [1] "bar"
#> [1] "bar"