【问题标题】:How to understand when to use the $ sign with list commands in TCL?如何理解在 TCL 中何时将 $ 符号与列表命令一起使用?
【发布时间】:2020-12-02 21:15:45
【问题描述】:

这里我们有 3 个命令:lindex、lappend 和 length。

如果我想使用它们,我需要将 $ 符号与 lindex 和 llength 一起使用,但我不需要将它与 lappend 一起使用。

看下面的代码:

set list_name {1 2 3 4 5}
puts [lindex $list_name 1]
lappend list1 6
puts [llength $list_name]

我如何理解在哪个命令之后我需要使用带有变量名的 $ 符号以及何时不需要使用它?

【问题讨论】:

标签: list function scripting command tcl


【解决方案1】:

一般规则是如果 Tcl 正在读取变量的值,请使用 $。 修改已有变量时,不使用$,使用变量名。

  • lappend 直接修改了它的参数,所以它需要一个变量名。
  • lindex 正在读取某个索引处的列表值,因此 列表已使用。
  • llength 正在读取一个列表的值,所以值 列表中的一个被使用。

这三个实际上相当简单。我发现lreplace 是最难记住的。 lreplace 返回一个新列表并且不修改作为参数给出的列表。它接受列表的值作为参数。

直接修改列表:

  • 搭接
  • 设置

使用列表的值:

  • 索引
  • 长度
  • 替换
  • 地图
  • 范围
  • 逆向
  • 搜索
  • 排序

【讨论】:

  • foreach 是另一个使用列表值的命令。
【解决方案2】:

tcl documentation 中的约定之一是使用 varNametypeVariable 来表示采用变量名并修改变量内容的事物,而 typeValuetype(如 liststringdictionaryValue)用于取值的事物那种类型的。后一种情况是当您使用$foo 传递变量的内容时。第一种情况是当您使用foo 时(当然,除非您要使用的变量的名称本身在变量中)。

如果您正在使用 tcl,您还必须熟悉 Dodekalogue,了解 $ 的含义以及一般如何使用它(规则 8)。

【讨论】:

    猜你喜欢
    • 2017-09-13
    • 2016-11-18
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 2015-09-21
    • 2011-01-08
    相关资源
    最近更新 更多