के अंत में निष्पादित नहीं करता है प्रलेखन ?reg.finalizer
से:reg.finalizer() एक अनुसंधान पैकेज में आर में एक अनुसंधान सत्र
अन्य बातों के साथ, यह कोड कार्यक्रम के लिए एक रास्ता चलाने के लिए प्रदान करता है
.Last
में हेरफेर किए बिना आर सत्र के अंत में। किसी पैकेज में उपयोग के लिए, अक्सर नामस्थान में किसी ऑब्जेक्ट पर फाइनलाइज़र सेट करना एक अच्छा विचार होता है: फिर सत्र के अंत में इसे कॉल किया जाएगा, या सत्र के दौरान किए जाने पर नामस्थान को अनलोड किए जाने के तुरंत बाद।
ऐसा लगता है कि आर 0 सत्र समाप्त होने पर कुछ कोड चलाने के लिए मैं reg.finalizer()
का उपयोग कर सकता हूं, लेकिन यह मेरे लिए काम नहीं करता है। मैं https://github.com/yihui/finalizer-test पर एक न्यूनतम पैकेज, जो मूल रूप से नीचे कोड शामिल तैयार किया है:
e = new.env()
reg.finalizer(e, function(e) {
message('Bye!')
}, onexit = TRUE)
मैं बस एक इंटरैक्टिव आर सत्र में उपरोक्त कोड चलाने के लिए और सत्र से बाहर निकलें, तो मैं संदेश Bye!
देख सकते हैं, लेकिन अगर मैं उपर्युक्त पैकेज स्थापित करें (आप devtools::install_github('yihui/finalizer-test')
का उपयोग कर सकते हैं), इसे आर सत्र में लोड करें, और आर सत्र छोड़ दें, मुझे संदेश नहीं दिखाई देता है। मुझे आश्चर्य है कि अंतिम मामले में इस मामले में निष्पादन क्यों नहीं किया जाता है।
Fwiw, जब मैं पैकेज स्थापित, मैं संदेश Bye!
देख सकते हैं:
$ R -e "library(finalizer)"
> library(finalizer)
>
>
$
'.onLoad' चाल किया! धन्यवाद! –