TCLでアップレベルの使用を理解する上で問題があります。私はBrent WelchのTCLとTkのPracticalプログラミングを読んでいます。私は理解できないほど上の例があります。ここにあります:TCLでuplevelコマンドを理解できません
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では、コルーチンを使って 'uplevel#1'を使うことができました。これは数十年にわたり合法的であったとしても、その特定の形態のための最初の実用的な使用であると考えられました。 –
* * *の構文が記述されています。「*レベル*が#で構成され、その後に番号がある場合、番号は絶対レベル番号を与えます。 http://www.tcl.tk/man/tcl8.5/TclCmd/uplevel.htm –
@DonalFellowsトップ 'コルーチン 'スタックを' tailcall'しないでください。 –