rebol2 - Retrieving function arguments programatically in Rebol -


यह खोल स्तर पर काम करता है:

  & gt; & gt; A: "हैलो" == "हैलो" & gt; & gt; लेकिन एक फ़ंक्शन के भीतर:  
  f: func [arg1] [v1] : मिल 'arg1? V1 v2: मिलना-शब्द-शब्द "arg1"? V2] & gt; & gt; च "अलविदा" वी 1 मूल्य का एक स्ट्रिंग है: "अलविदा" ** स्क्रिप्ट त्रुटि: arg1 का कोई मान नहीं है ** कहां: f ** पास: v2: टू-लिट-शब्द "arg1" प्राप्त करें   

मैं "मिल" का उपयोग कर तर्क मान कैसे प्राप्त करूं?

शुरुआत के लिए, आप इसका उल्लेख करेंगे कि जब आप v1 और v2 का उपयोग FUNC में करते हैं, तो आप उन्हें सम्मिलित संदर्भ में लिख रहे हैं। तो वे "वैश्विक चर" की तरह काम करेंगे दबाने के लिए कि आप अपने FUNC-spec func [arg1 / local v1 v2] में डाल दिया था।

(ध्यान दें: Rebol3 फ़ंक्शन है जो स्थानीय लोगों के लिए स्वचालित रूप से स्कैन करता है और आपके लिए अंतर्निहित FUNC को बनाता है। लेकिन फ़ंक्शन का मतलब रीबोल 2 में कुछ और है, जो कि FUNCT के रूप में उपलब्ध है।)


इसके अलावा: जब आप प्राप्त करें लिखते हैं > आप प्राप्त करने के लिए एक जला-शब्द नहीं गुजर रहे हैं उनकी बुद्धिमत्ता है जो उन्हें देखे जाने से बचाती है, लेकिन जब मूल्यांकनकर्ता इसे खत्म करता है ... एक शब्द बनने के लिए एक लिट-शब्द का मूल्यांकन किया जाता है:

  & gt; & gt; प्रकार? 'ए == शब्द!   

यदि आप वास्तव में एक फ़ंक्शन में लिट-शब्द तर्क पारित करना चाहते हैं, तो आपको इसे उद्धृत करना होगा:

  & gt; & gt; प्रकार? बोली 'ए == लिट-शब्द!   

हो सकता है कि जाहिरा तौर पर आप इसे एक लिट-शब्द पास करने को अस्वीकार कर रहे हैं! हालांकि मुझे लगता है कि यह स्पष्ट होगा अगर यह अधिक संकीर्ण रूप से टाइप किया गया हो। किसी भी मामले में, मैं यह लिखूंगा कि को "शब्द" पर "a"


मैं अपने मुख्य प्रश्न की कोशिश करने और जवाब देने के लिए शायद एक बुरी इंसान हूं। लेकिन मैं बताता हूं कि रिबोल 3 में पहला पैटर्न भी काम नहीं करता है:

  & gt; & gt; A: "हैलो" == "हैलो" & gt; & gt; "शब्द" के लिए शब्द "एक" ** स्क्रिप्ट त्रुटि: एक शब्द एक संदर्भ के लिए बाध्य नहीं है ** कहाँ: प्राप्त करें ** करीब: प्राप्त करने के लिए शब्द "a"   

किसी शब्द से मूल्य प्राप्त करने में सक्षम हो, यह सिर्फ "एक शब्द होना" के लिए पर्याप्त नहीं है उस शब्द को कुछ वस्तु के लिए बाध्य होना चाहिए जो "संदर्भ" के रूप में कार्य करता है; और बाइंडिंग एक शब्द है जिसे स्वयं शब्द से जुड़ा हुआ है।

रीबोल 2 इस बारे में रीबोल 3 से थोड़ा अलग कार्य करता है। लेकिन अगर आप जानकारी के फायरशॉज चाहते हैं, तो विषय पर कुछ पोस्ट हैं:

अक्सर मुझे लगता है कि मुझे उन मामलों में मिल सकता है जहां मैं -शब्द "कुछ-स्ट्रिंग" इसके बजाय लोड "कुछ-स्ट्रिंग" कहकर। तो Rebol3 में:

  & gt; & gt; A: "हैलो" == "हैलो" & gt; & gt; लोड "a" == "हैलो" प्राप्त करें   

ये फ़ंक्शन तर्क एक अलग कहानी है आप मैन्युअल रूप से अपने परिवर्तित शब्द को एक सन्दर्भ में बाँध सकते हैं जिसे आप उस संदर्भ के भीतर कुछ और पूछताछ करके प्राप्त कर सकते हैं:

  f: func [arg1 / local dummy] [v2: बांड (शब्द "आर्ग 1 ") (बाँध? 'डमी)? V2] & gt; & gt; एफ "अलविदा" वी 2 मूल्य "स्ट्रॉबेरी" की एक स्ट्रिंग है, जो कि रिबोल 2 में काम करता है, लेकिन रिबोल 3 नहीं है जब तक कि आप बंद नहीं करते हैं:  
  f: बंद [आर्ग 1 / स्थानीय डमी] [v2: बाइंड (टू-शब्द "आर्ग 1") (बाँध? डमी) प्राप्त करें? V2] & gt; & gt; एफ "अलविदा" वी 2 मूल्य "स्ट्रॉबेरी" की एक स्ट्रिंग है।   

रीबोल के बारे में रहस्यमय बयानों की श्रेणी में (जैसे "कोई चर नहीं है, बृहदान्त्र एक असाइनमेंट ऑपरेटर नहीं है" ) आप "रिबोल में वास्तव में बिल्कुल भी स्क्रॉप नहीं कर सकते हैं" में जोड़ सकते हैं।

आपको विशेषज्ञों से पूछना होगा चैट में अधिक विवरण ...

Comments

Popular posts from this blog

ios - Adding an SKSpriteNode to SKScene from a child SKSpriteNode -

Matlab transpose a table vector -

c# - Textbox not clickable but editable -