【问题标题】:Tcl syntax explanationTcl语法解释
【发布时间】: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 ]
}

有哪些文档可以帮助解释上述语法?

【问题讨论】:

    标签: syntax tcl


    【解决方案1】:

    只有 forincr 是该示例中的标准 Tcl 命令。如果您了解 C 或 Java 或 C#,您可能会毫不费力地猜出它们是做什么的;语法有点不同,但不是很大。

    其他命令是这些,但我不知道是谁定义的:

    • local — 似乎正在设置一个局部变量。使用set 有什么问题?我不知道……
    • bs — 特别是 bs rhex,它似乎正在从流(在 bsStream 变量中命名)获取一个值(十六进制?)。 这完全是猜测。
    • strcat — 我猜这是对它的参数进行字符串连接,因为它有一个标准 C 函数的名称,它可以做到这一点(做任何其他事情都会奇怪并被设计成自己跳闸程序员)。

    最后一行的写法更传统:

    append hexStr $topb $botb
    

    因为append 命令已针对构建字符串零碎的情况进行了优化(在其内存管理中,这往往会主导这些事情)。特别是,它没有证明二次方Shlemiel the painter misbehaviour

    【讨论】:

      【解决方案2】:

      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}

      【讨论】:

      • 回复"inclriment":你的意思是"increment"(两改一删一换)?如果是这样,您能否edit (change) your answer,而不是 cmets 中(without "Edit:"、"Update:" 或类似的 - 答案应该看起来像今天写)?
      • “没有什么比...”是什么意思?它不存在吗?或者是其他东西?可以elaborate吗?
      猜你喜欢
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 2016-03-19
      • 1970-01-01
      相关资源
      最近更新 更多