【发布时间】:2021-10-18 06:10:00
【问题描述】:
Tcl 代码:
for {local i 0 } { $i < $bsLen } { incr i } {
local topb [bs rhex $bsStream 1]
local botb [bs rhex $bsStream 1]
local hexStr [strcat $hexStr $topb $botb ]
}
有哪些文档可以帮助解释上述语法?
【问题讨论】:
Tcl 代码:
for {local i 0 } { $i < $bsLen } { incr i } {
local topb [bs rhex $bsStream 1]
local botb [bs rhex $bsStream 1]
local hexStr [strcat $hexStr $topb $botb ]
}
有哪些文档可以帮助解释上述语法?
【问题讨论】:
只有 for 和 incr 是该示例中的标准 Tcl 命令。如果您了解 C 或 Java 或 C#,您可能会毫不费力地猜出它们是做什么的;语法有点不同,但不是很大。
其他命令是这些,但我不知道是谁定义的:
local — 似乎正在设置一个局部变量。使用set 有什么问题?我不知道……bs — 特别是 bs rhex,它似乎正在从流(在 bsStream 变量中命名)获取一个值(十六进制?)。 这完全是猜测。
strcat — 我猜这是对它的参数进行字符串连接,因为它有一个标准 C 函数的名称,它可以做到这一点(做任何其他事情都会奇怪并被设计成自己跳闸程序员)。最后一行的写法更传统:
append hexStr $topb $botb
因为append 命令已针对构建字符串零碎的情况进行了优化(在其内存管理中,这往往会主导这些事情)。特别是,它没有证明二次方Shlemiel the painter misbehaviour。
【讨论】:
Tcl 中没有任何地方标准关键字。
for {set i 0 } { $i < $bsLen } { incr i } {
set topb [bs rhex $bsStream 1]
set botb [bs rhex $bsStream 1]
sethexStr [strcat $hexStr $topb $botb ]
}
for {initialize} {condition_check} {inclriment} {body to execute}
【讨论】: