gpt4 book ai didi

tcl - 为什么花括号允许变量替换?

转载 作者:行者123 更新时间:2023-12-04 06:43:39 25 4
gpt4 key购买 nike

Tcl 手册说大括号不允许变量替换。然而,这仅适用于某些命令,而不适用于其他命令。

有什么区别以及如何识别将发生替换的情况和不会发生替换的情况?

% set x 3
3
% puts {$x}
$x
% expr {$x}
3

最佳答案

引用列表standard commands :任何接受“主体”或“脚本”参数的命令最终都会将该主体评估为代码。不能保证详尽无遗:

after, apply, catch, eval, expr, fileevent (and chan event), for, foreach, if, interp eval, lmap, some namespace subcommands, some oo::* commands, proc, subst, switch, try, uplevel, while

这确实是 Tcl 最大的优势之一。它使您能够轻松编写自己的控制结构。例如,Tcl 不提供 do-while 循环,但您可以这样做:

proc do {body while condition} {
if {$while ni {while until}} {
error "some message about usage..."
}
while true {
uplevel 1 $body
set status [uplevel 1 [list expr $condition]]
if {$while eq "while" && !$status} then break
if {$while eq "until" && $status} then break
}
}

这样

% set i 0; while {[incr i] < 3} {puts "$i"}
1
2
% set i 0; do {puts "$i"} while {[incr i] < 3}
0
1
2
% set i 0; do {puts "$i"} until {[incr i] == 3}
0
1
2

关于tcl - 为什么花括号允许变量替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57546270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com