ऑब्जेक्ट उन्मुख आर प्रोग्रामिंग (विशेष रूप से विंस्टन चांग के आर 6 पैकेज) में, active binding क्या है?ऑब्जेक्ट उन्मुख आर प्रोग्रामिंग में, "सक्रिय बाध्यकारी" क्या है?
उत्तर
सबसे पहले यह समझना सबसे अच्छा है कि "बाध्यकारी" क्या है। हम जैसे कोड चलाते हैं:
x <- 5
तो
क्या कंप्यूटर के अंदर हुआ है कि हम स्मृति का एक स्लॉट में 5 के मान डाल दिया है और हम भी उस स्थान पर 'बाध्य' है नाम "x" और है मूल्य ताकि बाद में हम x
का उपयोग कर सकें और यह उस स्मृति स्थान पर जायेगा और मूल्य को देखेगा (जो तब तक 5 है जब तक हम इसे किसी अन्य चीज़ में नहीं बदलते)। इसे स्थैतिक बाध्यकारी कहा जाता है क्योंकि जब तक कार्यक्रम विशेष रूप से परिवर्तन नहीं करता है तब तक मूल्य परिवर्तित नहीं होता है।
एक सक्रिय बाध्यकारी समान है कि हम एक परिवर्तनीय नाम (जैसे "x") को किसी चीज़ पर बांधते हैं, लेकिन कुछ ऐसा केवल स्थिर मूल्य नहीं है, बल्कि एक कार्य जो हर बार चलाया जाएगा जब हम x
तक पहुंचने का प्रयास करेंगे । तो आप 0xपर कॉल करते समय "x" नाम को बाध्य कर सकते हैं और फिर जब भी आप x
तक पहुंचते हैं तो आपको एक अलग यादृच्छिक सामान्य मान दिखाई देगा।
एक अन्य उदाहरण है, पर विचार अगर हम की तरह स्थिर बाइंडिंग के साथ कुछ करना:
mydf <- data.frame(x=1:10, y=10:1)
df.size <- nrow(mydf)
mydf <- data.frame(z=1:100)
अब चर df.size
mydf
की पंक्तियों की संख्या कब बनाया गया था है, नहीं है कि यह कैसे कई पंक्तियों अब है (nrow
के बाद से एक बार चलाया गया था, तो परिणाम को df.size
वैरिएबल में स्थिर बाध्यकारी के रूप में रखा गया था, यह डेटा फ्रेम में परिवर्तनों के साथ अद्यतन नहीं होता है)। यदि दूसरी तरफ हमने df.size
और nrow(mydf)
चलाए गए फ़ंक्शन के बीच एक सक्रिय बाध्यकारी बनाया तो किसी भी समय हमने df.size
के "मान" को देखा, तो यह mydf
में पंक्तियों की वर्तमान संख्या दिखाएगा चाहे कितनी बार हम इसे बदल दें।
ग्रेग के उदाहरण बताते हैं कि प्रतीक 'डेटा' चर या किसी फ़ंक्शन पर कैसे बाध्य होता है, लेकिन दोनों मामलों में बाध्यकारी स्थिर है; एक समारोह एक पूर्णांक वेक्टर (आईएनटीएसएक्सपी) के रूप में एक आर वस्तु (तकनीकी रूप से, एस-अभिव्यक्ति, उदाहरण के लिए, एक CLOSXP) है। आर की सक्रिय बाइंडिंग वे प्रतीक हैं जो चर की तरह दिखती हैं लेकिन 'गेट' और 'सेट' कार्यक्षमता वाले कार्यों की तरह कार्य करती हैं - गैबर के उत्तर में 'यादृच्छिक नहीं' प्रतीक। यह हमेशा मुझे अजीब लगता है कि एक ऑब्जेक्ट सिस्टम (संदर्भ कक्षाएं या आर 6) इस quirky 'प्रयोगात्मक' सुविधा पर आधारित होगा (देखें '? MakeActiveBindng')। –
1) आर आर में, एक active binding का विचार है कि आप कुछ है जो एक चर की तरह लग रहा परिभाषित कर सकते हैं लेकिन यह वास्तव में एक समारोह में प्रत्येक बार पहुँचा जा सकता है invokes।
उदाहरण के लिए, यह समारोह makeActiveBinding
(जो इस मामले में एक सामान्य यादृच्छिक variate उत्पन्न करता है) के बाद दूसरे स्थान तर्क में निर्दिष्ट कॉल करता है और समारोह के मान देता है के बाद से हर बार randomNo
नीचे makeActiveBinding
बयान एक चर के रूप में प्रयोग किया जाता है:
makeActiveBinding("randomNo", function() rnorm(1), .GlobalEnv)
set.seed(123) # for reproducibility
randomNo
## [1] -0.5604756
randomNo
## [1] -0.2301775
2) R6 इसी तरह, R6 में एक क्षेत्र की तरह एक सक्रिय बाध्यकारी दिखता है लेकिन यह वास्तव में एक समारोह जब फंक्शन का मान लौटने पहुँचा चलाता है।
यहां उदाहरण है (1) आर 6 सक्रिय बाइंडिंग के साथ फिर से करें। ध्यान दें कि प्रत्येक बार फ़ील्ड randomNo
को संबंधित फ़ंक्शन (जो सामान्य यादृच्छिक विविधता उत्पन्न करता है) तक पहुंचाया जाता है और इसका मान फ़ील्ड के मान के रूप में लौटाया जाता है।
library(R6)
RandomClass <- R6Class("Numbers",
active = list(
randomNo = function() rnorm(1)
)
)
set.seed(123)
randomObject <- RandomClass$new()
randomObject$randomNo
## [1] -0.5604756
randomObject$randomNo
## [1] -0.2301775
3) R6 - दूसरे उदाहरण एक और उदाहरण R6 सक्रिय बाध्यकारी प्रलेखन here में पाया जा सकता।कि उदाहरण में, हर बार क्षेत्र x2
एक्सेस किया जाता है जैसे कि यह एक साधारण क्षेत्र थे, वहाँ एक फोन (यह करने के लिए किसी भी तर्क से गुजर बिना) x2
के साथ जुड़े समारोह और x2
के मूल्य के किया जाता है कि समारोह चल रहा है का परिणाम है ।
'get' और 'set' क्षमताओं दोनों को दिखाने के लिए सक्रिय बाध्यकारी उदाहरण का विस्तार करना बेहतर हो सकता है, 'fact' उदाहरण'? MakeActiveBinding' पर। –
मुझे नहीं लगता कि यह उचित होगा। आर 6 में सक्रिय बाध्यकारी क्या है इसका जवाब है, इस पर एक पूर्ण ट्यूटोरियल नहीं है। मैंने पहले से ही विग्नेट के लिए एक लिंक प्रदान किया है जहां अधिक जानकारी मिल सकती है। –
- 1. ऑब्जेक्ट उन्मुख प्रोग्रामिंग
- 2. एंड्रॉइड ऑब्जेक्ट उन्मुख प्रोग्रामिंग
- 3. ऑब्जेक्ट उन्मुख प्रोग्रामिंग में कार्यात्मक प्रोग्रामिंग
- 4. पहलू उन्मुख प्रोग्रामिंग क्या है?
- 5. ऑब्जेक्ट उन्मुख प्रोग्रामिंग पूरी तरह कार्यात्मक प्रोग्रामिंग संदर्भ में?
- 6. क्या मोंगोडीबी ऑब्जेक्ट उन्मुख है?
- 7. पहलू उन्मुख प्रोग्रामिंग - 'cflow' क्या है?
- 8. ओआरएम ऑब्जेक्ट उन्मुख प्रोग्रामिंग के लिए विशिष्ट समस्या है?
- 9. दावा क्यों है कि सी # लोगों को ऑब्जेक्ट उन्मुख प्रोग्रामिंग नहीं मिलती है? (बनाम वर्ग उन्मुख)
- 10. पहलू उन्मुख प्रोग्रामिंग उदाहरण
- 11. क्या मेरा PHP कोड ऑब्जेक्ट उन्मुख है?
- 12. वस्तु उन्मुख प्रोग्रामिंग में सार्वजनिक, निजी और संरक्षित क्या हैं?
- 13. ऑब्जेक्ट उन्मुख PHP धीमा है?
- 14. ऑब्जेक्ट उन्मुख जावास्क्रिप्ट
- 15. भविष्य का अनुमान उन्मुख प्रोग्रामिंग
- 16. सबसे सक्रिय जेनेटिक प्रोग्रामिंग लाइब्रेरी क्या है?
- 17. इस प्रक्रियात्मक प्रोग्रामिंग को ऑब्जेक्ट उन्मुख प्रोग्रामिंग में कैसे परिवर्तित करें?
- 18. क्या पाइथन अधिक ऑब्जेक्ट उन्मुख में बदल गया है?
- 19. क्या पर्ल में ऑब्जेक्ट उन्मुख अपवाद हैंडलिंग है?
- 20. ऑब्जेक्ट उन्मुख डिजाइन प्रश्न
- 21. प्रोग्रामिंग में "धारावाहिक" ऑब्जेक्ट क्या है?
- 22. ऑब्जेक्ट उन्मुख नेटवर्किंग
- 23. PHP ऑब्जेक्ट उन्मुख दृश्यता
- 24. स्काला का ऑब्जेक्ट उन्मुख
- 25. स्प्रिंग रू और पहलू उन्मुख प्रोग्रामिंग
- 26. आर प्रोग्रामिंग
- 27. क्या सी ++ पूरी तरह उन्मुख भाषा का ऑब्जेक्ट है?
- 28. क्लोजर ऑब्जेक्ट उन्मुख है अपने दिल में? (Seqs में polymorphism)
- 29. ऑब्जेक्ट उन्मुख और दस्तावेज़ डेटाबेस के बीच क्या अंतर है?
- 30. घटक-उन्मुख और ऑब्जेक्ट उन्मुख भाषा के बीच क्या अंतर है?
'help.search (" सक्रिय बाध्यकारी ")'> '? Bindenv'> * उदाहरण * –
@ जोशुआउलिच: हालांकि यह शायद एक सही तकनीकी वर्णन है, यह किसी ऐसे व्यक्ति के लिए बहुत प्रबुद्ध नहीं है जो पहले से ही समझ में नहीं आता है एक बाध्यकारी है ... – histelheim