मैं पहले इस्तेमाल कर चुका हूं let, लेकिन कभी भी इस्तेमाल नहीं किया let*
है let*(तारांकन) का क्या मतलब है?
इस asterisk के कारण google के लिए मुश्किल था।
मैं पहले इस्तेमाल कर चुका हूं let, लेकिन कभी भी इस्तेमाल नहीं किया let*
है let*(तारांकन) का क्या मतलब है?
इस asterisk के कारण google के लिए मुश्किल था।
जवाबों:
इसका अर्थ है कि जब एक से अधिक बाइंडिंग होते हैं तो चर क्रमबद्ध रूप से बंधे होते हैं, ताकि प्रत्येक उन लोगों के लिए बंधे हुए मूल्यों पर निर्भर हो सके, जो इससे पहले बंधे हुए हैं, अर्थात, जो let*बाइंडिंग में इसके पहले आते हैं ।
के लिए let(कोई तारांकन), बाइंडिंग से कोई भी (चर, सिद्धांत रूप में, समानांतर में बाध्य किया जा सकता है) दूसरों के किसी भी पहले होने माना जा सकता है।
इसलिए (let ((a 42) (b a))...b)एक त्रुटि उत्पन्न कर सकता है क्योंकि यह bमान को बांधने की कोशिश करता है a, और aकम से कम (जो विशेष रूप aसे इस में बंधा हुआ है let) को एक मूल्य के लिए बाध्य नहीं माना जा सकता है।
[यदि कुछ अन्य (उदाहरण के लिए वैश्विक) चर a एक मान से बंधा हुआ है, उदाहरण के लिए 5, तो वह letअभिव्यक्ति इसके (स्थानीय) aको 42बाध्य bकरेगा और वैश्विक के मान को बाँध देगा a, अर्थात 5।]
लेकिन (let* ((a 42) (b a))...b)रिटर्न 42क्योंकि aके लिए बाध्य हो जाता है 42 और फिर b के मूल्य के लिए बाध्य हो जाता है a।
एलिस्पल मैनुअल, नोड लोकल वेरिएबल्स देखें ।
अपडेट, @ DoMiNeLa10 के रिमाइंडर से टिप्पणी में:
मैनुअल के अलावा, आप हेल्प कमांड का भी उपयोग कर सकते हैं । "Emacs से पूछें" के सभी विभिन्न तरीकों में से , वे सबसे पहले सीखने वाले और सबसे उपयोगी हैं।
और C-h f let*हमें बताता है, सफलतापूर्वक:Each VALUEFORM can refer to the symbols already bound by this VARLIST.
हालांकि यहाँ पूछने में कुछ भी गलत नहीं है, अगर आप Emacs से इस तरह के सवाल पूछते हैं तो आप अपने आप पर एक एहसान करेंगे । बस मैनुअल के इंफो ब्राउजर को खोलने के लिए उपयोग करें, मैनुअल चुनें, और इंडेक्स में देखने के लिए उपयोग करें (पूरा होने के साथ)। यह आपको सीधे उस नोड पर ले जाता है जो इसे कवर करता है।C-h iElispi let*let*
(और मैनुअल आमतौर पर चीजों को बेहतर तरीके से कवर करता है, यहां हजारों योगदानकर्ताओं द्वारा बहुत समय और प्रयास के रूप में किया जाएगा, इसे सही होने में सही हो गया है: सही और पूर्ण।)
आप इस साइट को उन सवालों और जवाबों के लिए भी खोज सकते हैं जो टैग का उपयोग करते हैं let-binding: बस [let-binding]खोज फ़ील्ड में डालें। (मैं अब करूँगा, यह देखने के लिए कि क्या यह प्रश्न संभवतः एक डुप्लिकेट है ...)
F1 f।
let*एक पुनरावर्ती letअर्थ की तरह है:
(let* ((var1 VAL1)
(var2 VAL2))
...)
के समान ही
(let ((var1 VAL1))
(let ((var2 VAL2))
...))
जिससे पूंजी अक्षरों का उपयोग VAL1और VAL2संकेत मिलता है कि वे भी अभिव्यक्ति हो सकते हैं।
letयदि VAL2वास्तव में पर निर्भर करता है, तो पुनरावर्ती- बंधन के परिणाम हैं var1। ड्रू के जवाब में प्रभाव पहले से ही वर्णित है ।
b5 बराबर होता है क्योंकि यह वैश्विक के लिए बाध्य हैa। इसकेletबजाय पढ़ना चाहिएlet*