ID EN
Miscellaneous

bindenv

R Base 3.6.2 🇮🇩 Bahasa Indonesia

Fungsi-fungsi ini mewakili antarmuka untuk penyesuaian terhadap lingkungan dan pengikatan dalam lingkungan. Mereka memungkinkan untuk mengunci lingkungan serta pengikatan individu, dan untuk menghubungkan variabel ke suatu fungsi.

Syntax

R
lockEnvironment(env, bindings = FALSE)
environmentIsLocked(env)
lockBinding(sym, env)
unlockBinding(sym, env)
bindingIsLocked(sym, env)<p></p><p>makeActiveBinding(sym, fun, env)
bindingIsActive(sym, env)</p>

Arguments

Parameter Deskripsi
env an environment.
bindings logical specifying whether bindings should be locked.
sym a name object or character string.
fun a function taking zero or one arguments.

Return Value

bindingIsLocked dan environmentIsLocked mengembalikan vektor logis dengan panjang satu. Fungsi lainnya mengembalikan NULL, tanpa terlihat.

Details

Fungsi lockEnvironment mengunci argumen lingkungannya, yang harus berupa lingkungan normal (bukan lingkungan dasar). (Mengunci lingkungan dasar dan namespace mungkin didukung nanti.) Mengunci lingkungan mencegah penambahan atau penghapusan pengikatan variabel dari lingkungan. Mengubah nilai suatu variabel masih dapat dilakukan kecuali pengikatannya telah dikunci. Lingkungan namespace paket dengan namespace dikunci saat dimuat. lockBinding mengunci binding individual di lingkungan tertentu. Nilai pengikatan terkunci tidak dapat diubah. Ikatan yang terkunci dapat dihapus dari suatu lingkungan kecuali lingkungan tersebut terkunci. makeActiveBinding menginstal fun di lingkungan env sehingga mendapatkan nilai sym memanggil fun tanpa argumen, dan menugaskan ke sym memanggil fun dengan satu argumen, t

Contoh

Example
R
# NOT RUN {
# 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
# }