में अपलेवल कमांड को समझ नहीं सकता है मुझे टीसीएल में अपलेवल के उपयोग को समझने में कुछ समस्याएं आ रही हैं। मैं टीसीएल और ब्रेंट में ब्रेंट वेल्च के प्रैक्टिकल प्रोग्रामिंग पढ़ रहा हूं और अपील में एक उदाहरण है जिसे मैं समझ नहीं पा रहा हूं। यहां यह है:टीसीएल
proc lassign {valueList args} {
if {[llength $args] == 0} {
error "wrong # args:lassign list varname ?varname...?"
}
if {[llength $valueList] == 0} {
#Ensure one trip through the foreach loop
set valueList [List {}]
}
uplevel 1 [list foreach $args $valueList {break}]
return [lrange $valueList [llength $args] end]
}
क्या कोई इसे मुझे समझा सकता है? पुस्तक में स्पष्टीकरण मुझे काफी मदद नहीं करता है :(
8.6 में, हम कोरआउट के साथ 'अपलेवल # 1' के लिए उपयोग ढूंढने में कामयाब रहे। इसे उस विशेष रूप के लिए पहला व्यावहारिक उपयोग _ever_ माना जाता था, भले ही यह दशकों से कानूनी रहा हो। –
* # * वाक्यविन्यास इस प्रकार वर्णित है: "यदि * स्तर * में # के बाद संख्या होती है तो संख्या पूर्ण स्तर संख्या प्रदान करती है।" http://www.tcl.tk/man/tcl8.5/TclCmd/uplevel.htm –
@DonalFellows शीर्ष 'coroutine' स्टैक 'tailcall' नहीं है। –