R語言
bindenv
位於 base
包(package)。 說明
這些函數代表用於調整環境和環境內綁定的接口。它們允許鎖定環境以及單獨的綁定,以及將變量鏈接到函數。
用法
lockEnvironment(env, bindings = FALSE)
environmentIsLocked(env)
lockBinding(sym, env)
unlockBinding(sym, env)
bindingIsLocked(sym, env)
makeActiveBinding(sym, fun, env)
bindingIsActive(sym, env)
activeBindingFunction(sym, env)
參數
env |
一個環境。 |
bindings |
邏輯指定是否應鎖定綁定。 |
sym |
名稱對象或字符串。 |
fun |
帶有零個或一個參數的函數。 |
細節
函數 lockEnvironment
鎖定其環境參數。鎖定環境可以防止在環境中添加或刪除變量綁定。除非綁定已被鎖定,否則仍然可以更改變量的值。具有命名空間的包的命名空間環境在加載時被鎖定。
lockBinding
鎖定指定環境中的各個綁定。鎖定綁定的值無法更改。除非環境被鎖定,否則可以從環境中刪除鎖定的綁定。
makeActiveBinding
安裝fun
在環境中env
從而得到的值sym
調用fun
不帶參數,並分配給sym
調用fun
帶有一個參數,即要分配的值。這允許實現諸如鏈接到的 C 變量之類的東西R變量和鏈接到數據庫的變量,用於實現setRefClass
。它對於製作某些係統全局變量的線程安全版本也可能很有用。當前活動綁定在軟件包安裝過程中不會保留,但可以在以下位置創建:.onLoad
.
值
bindingIsLocked
和 environmentIsLocked
返回長度為 1 的邏輯向量。其餘函數不可見地返回 NULL
。
例子
# locking environments
e <- new.env()
assign("x", 1, envir = e)
get("x", envir = e)
lockEnvironment(e)
get("x", envir = e)
assign("x", 2, envir = e)
try(assign("y", 2, envir = e)) # error
# locking bindings
e <- new.env()
assign("x", 1, envir = e)
get("x", envir = e)
lockBinding("x", e)
try(assign("x", 2, envir = e)) # error
unlockBinding("x", e)
assign("x", 2, envir = e)
get("x", envir = e)
# active bindings
f <- local( {
x <- 1
function(v) {
if (missing(v))
cat("get\n")
else {
cat("set\n")
x <<- v
}
x
}
})
makeActiveBinding("fred", f, .GlobalEnv)
bindingIsActive("fred", .GlobalEnv)
fred
fred <- 2
fred
作者
Luke Tierney
相關用法
- R bincode Bin 數值向量
- R bitwise 按位邏輯運算
- R basename 操作文件路徑
- R body 訪問和操作函數體
- R backsolve 求解上三角係統或下三角係統
- R bquote 表達式中的部分替換
- R builtins 返回所有內置對象的名稱
- R balancePOSIXlt 平衡“不規則”和超出範圍的 POSIXlt 日期時間
- R by 將函數應用於按因子拆分的 DataFrame
- R browserText 檢索瀏覽器調用提供的值的函數
- R base-defunct 包庫中已失效的函數
- R browser 環境瀏覽器
- R file.path 構造文件路徑
- R grep 模式匹配和替換
- R getwd 獲取或設置工作目錄
- R vector 向量 - 創建、強製等
- R lapply 對列表或向量應用函數
- R dump R 對象的文本表示
- R Sys.getenv 獲取環境變量
- R rank 樣本排名
- R getDLLRegisteredRoutines DLL 中 C/Fortran 例程的反射信息
- R pushBack 將文本推回連接
- R strsplit 分割字符向量的元素
- R seq.Date 生成規則的日期序列
- R invisible 將打印模式更改為不可見
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Binding and Environment Locking, Active Bindings。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。