English 中文(简体)
部队派遣国的变数和指挥替代
原标题:variable and command substitution in TCL
  • 时间:2018-10-09 21:35:28
  •  标签:

我对替换部队派遣国感到困惑不解。 考虑以下法典:

set z [set x "This is a string within quotes within braces"]
puts $z

以上代码将给出结果<代码>。 这是在书目内的引文。

这一部分是明确的,因为z <>/strong>被定在座标上。” 这是在《<>/代码>内引用的缩略语。

至于第二指挥部,在替换后,该指挥部应像<编码>输出,“这是在布拉斯内引示的”。


但是,检查以下法典:

set z {[set x "This is a string within quotes within braces"]}
puts $z

现在,结果为<代码>[第x条“这是在书目中引用的”]。 我不理解这一结果。

我知道,在治疗性镜片中聚集起来的所有 st子都没有替代。 因此,变量z 现在应当持有<条码>[第x条,“这是在书目中引用的”]

但就下行而言:puts$z,我认为是$z。 应替换为其数值<代码>[第x条,“这是在布拉斯”()范围内引证的,而指挥目前也看上去。

puts [set x "This is a string within quotes within braces"]

为什么只印有<条码>。 这是在书目

最佳回答

从变数(或指挥)替代物中取回的座标的contents不是由Tcl语言核心重新解释的;它们只是交给你要求指挥。 一些指挥机构对其论点进行了重新解释(例如evalsubst,但puts)。 不是:它只是向目的地频道(按违约标准)印刷价值。 确实进行重新解释的指挥机构有文件记载这样做。


拨打<代码>时 计价 选择先看一字,按性质分类。 它在那里找不到任何Tcl metacharacters,因此它有一个简单的字面,puts。 然后看第二句话,看看一个可变替代代谢器,然后是一封信,这是一个适当的可变的替代;$z替代——即改为“从变量中读取的特性”,但现在投入案文中的那些特性却被划为一,因此没有什么其他意义。

问题回答

。 https://www.tcl.tk/man/tcl/TclCmd/Tcl.htm#M31 ——第11条明确规定,Tcl的替代品仅作一次,而“Unix”炮弹则保持可追溯性。

在另一个方面创建这一答案:

puts [subst $z] --> This is a string within quotes within braces

这一工作。

Link: How to variable substitution when reading a file in Tcl





相关问题