वहाँ तथ्य यह है कि REBOL/2 में यह वस्तु संदर्भों का विस्तार करने के लिए सिर्फ posssible नहीं है आस-पास काम करने के लिए कई तरीके हैं।
शायद तुम सिर्फ वस्तु के स्थान पर ब्लॉक का उपयोग कर सकते रों रों:!
>> blobject: [foo 1]
== [foo 1]
>> blobject/bar
** Script Error: Invalid path value: bar
** Near: blobject/bar
>> append blobject [bar 2]
== [foo 1 bar 2]
>> blobject/bar: 3
== 3
तुम भी सिर्फ वस्तु ही जोड़कर स्वयं काम कर रहे:
>> insert blobject reduce ['self blobject]
== [[...] foo 1 bar 2]
>> same? blobject blobject/self
== true
लेकिन तुम 'के रूप में कर सकते हैं OBJECT! s को विस्तारित करने के लिए कहा है, आप ऑब्जेक्ट को क्लोन करने के लिए पीटर डब्ल्यूए वुड के समाधान के लिए जा सकते हैं। बस ध्यान रखें कि इस दृष्टिकोण के साथ परिणामी क्लोन वास्तव में मूल वस्तु की तुलना में एक अलग बात है।
तो, अगर कुछ शब्द से पहले वस्तु धारण करने के लिए स्थापित किया गया है क्लोनिंग/विस्तार, उद्देश्य यह है कि शब्द अभी भी unextended वस्तु का आयोजन करेगा क्लोनिंग के बाद: आप रखने के लिए के लिए
>> remember: object: make object! [foo: 1]
>> object: make object [bar: 2]
>> same? remember object
== false
>> probe remember
make object! [
foo: 1
]
मामले में यह आवश्यक है "संदर्भ" बरकरार वस्तु के लिए, आप, वस्तु के रूप में आप
>> remember: object: make object! [access: make object! [foo: 1]]
>> object/access: make object/access [bar: 2]
>> same? remember object
== true
में फिर आप safley वस्तु रखते हुए विस्तार कर सकते हैं एक बाहरी वस्तु में बढ़ाने की जरूरत रैप करने के लिए चाहते हो सकता है आप कंटेनर के लिए केवल दुकान संदर्भ दी ।
REBOL/3, बीटीडब्ल्यू, शब्दों को ओबीजेक्ट में जोड़ने की अनुमति देगा!
स्रोत
2009-01-10 19:41:56
यह आरईबीओएल के मौलिक पहलुओं में से एक है, लेकिन उस समय मैंने इस सवाल से पूछा, मुझे पता नहीं था कि आप ऐसा कर सकते हैं। –