varsayalım aşağıdaki fonksiyonlara sahiptir: ŞimdiBağlama dış değişkenler
h = 4
g(2)
## should be 6
: Ben h
adında bir nesne, herhangi bir sorun olmazdı benim ortamında varsa Asistan
g = function(x) x+h
ben başka fonksiyonlara sahiptir:
f = function() {
h = 3
g(2)
}
ben beklenebilir:
rm(h)
f()
## should be 5, isn't it?
Bunun yerine, ben f
yılında h
g h bağlanabilir böylece olduğu gibi g
, f
ait ortamında değerlendirilecektir beklenir
## Error in g(2) : object 'h' not found
bir hatayı olsun .GlobalEnv
içinde g
çalıştırdığımda. Bu gerçekleşmez (belli ki). herhangi bir açıklama neden? Bunun üstesinden nasıl gelinir ki fonksiyon içindeki fonksiyon (ör. g
) çevreleyen ortam kullanılarak değerlendirilecek? Orada bir fonksiyonun parça çevre arasındaki fark, ve bunun (ana) değerlendirme çerçeve
, ancak R tüm değişkenler için küresel kapsama görünüyor olsa ya tanımlanmamış olarak görünüyor işlev çağrısı veya parametre olarak geçirilir. –