gpt4 book ai didi

list - Tcl 在使用 `$` 符号时添加花括号

转载 作者:行者123 更新时间:2023-12-01 09:00:02 25 4
gpt4 key购买 nike

set B {pc_0::!mx_0 pi::$mx_0}
puts $B

set A ""
foreach x $B {
lappend A $x
}

puts $A

这个程序的输出是

pc_0::!mx_0 pi::$mx_0
pc_0::!mx_0 {pi::$mx_0}

奇怪的是,tcl 在第二个输出中添加了花括号。我猜这是因为它使用 $ 符号。但我真的需要使用它,我不想插入大括号。这如何解释以及如何避免大括号?

最佳答案

作为一般规则,不要将列表视为字符串。假装它们没有字符串表示。 (字符串表示只对序列化、调试有用,对用户没有用)。

要将文本(尤其是用户输入)转换为列表,请使用 split .
要将其转换回来,请使用 join .

你想要的:

puts [join $A]

背景:

一个 list具有转义 Tcl 使用的所有元字符的副作用,因此当您 eval 时不会发生进一步的替换。这个 list 。这是生成稍后将执行的回调/代码的一个非常重要的属性:

set userinput [gets stdin]
set code [list puts $userinput]
eval $code

无论用户在这里输入什么,输出总是和用户输入的一样,没有任何替换。

如果 $ 不会被转义,则评估将尝试替换 $mx_0,这很可能会失败。

关于list - Tcl 在使用 `$` 符号时添加花括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19020505/

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