Syntax 如何在Tcl中粘贴文字
是否有任何语法技巧/功能允许我在TCL中粘贴两个文字,例如将带括号(Syntax 如何在Tcl中粘贴文字,syntax,tcl,Syntax,Tcl,是否有任何语法技巧/功能允许我在TCL中粘贴两个文字,例如将带括号({..})的单词和双引号的“..)单词连接成一个单词 我不是问设置一个{foo};设置b“条形\n矩形”;设置c$a$b或附加a$b——我知道它们;但是关于没有中间变量或命令的东西。类似于{*}word(将单词转换为列表) 我猜答案是“不可能”,但我对Tcl的肤浅知识不允许我得出这样的结论。如果你的话是一个有效的列表,你可以: set orig {abc def} set new [join $orig {}] 如果您的wor
{..}
)的单词和双引号的“..
)单词连接成一个单词
我不是问设置一个{foo};设置b“条形\n矩形”;设置c$a$b
或附加a$b
——我知道它们;但是关于没有中间变量或命令的东西。类似于{*}word
(将单词转换为列表)
我猜答案是“不可能”,但我对Tcl的肤浅知识不允许我得出这样的结论。如果你的话是一个有效的列表,你可以:
set orig {abc def}
set new [join $orig {}]
如果您的word是有效列表,您可以执行以下操作:
set orig {abc def}
set new [join $orig {}]
如果您使用的是最新的Tcl版本(8.6.2或更新版本),则可以使用
set c [string cat {foo} "bar\nquux"]
对于旧版本,您可以求助于
set c [format %s%s {foo} "bar\nquux"]
如果您使用的是最新的Tcl版本(8.6.2或更新版本),则可以使用
set c [string cat {foo} "bar\nquux"]
对于旧版本,您可以求助于
set c [format %s%s {foo} "bar\nquux"]
如果没有命令,就无法完成您的要求,因为大括号单词的语法不允许在之前或之后执行任何操作,并且一旦您有了几个单词,您就需要使用命令将它们连接起来(因为从Tcl语言核心的角度来看,命令就是这样做的;获取一些值并生成一个值结果)。不是在字符串中间有括号是语法错误-它不是-但它确实阻止他们引用字符。要明确的是:
放置a{b}
打印a{b}
,因为{
在这种情况下并不特殊,而是成为值的一部分put{a}b
是一个语法错误。(唯一的例外是{*}
,它的开头是{expand}
,但这太冗长了。)- 使用
字符串cat
- 使用连接过程(例如,
proc strcat{ab}{return$a$b}
- 将两个值放在大括号内,使其成为组合文字。当然,只有当两部分都是文字时,这才有效
- 将带大括号的部分转换为不带大括号(和不带双引号)的形式。这始终是可能的,因为每个带大括号的字符串都有一个不带大括号的等价项,但可能涉及大量反斜杠
放置a{b}
打印a{b}
,因为{
在这种情况下并不特殊,而是成为值的一部分put{a}b
是一个语法错误。(唯一的例外是{*}
,它的开头是{expand}
,但这太冗长了。)- 使用
字符串cat
- 使用连接过程(例如,
proc strcat{ab}{return$a$b}
- 将两个值放在大括号内,使其成为组合文字。当然,只有当两部分都是文字时,这才有效
- 将带大括号的部分转换为不带大括号(和不带双引号)的形式。这始终是可能的,因为每个带大括号的字符串都有一个不带大括号的等价项,但可能涉及大量反斜杠
proc strcat{a b}{return$a$b}
或更一般的:proc strcat args{join$args”“}
您也可以创建自己的字符串连接器:proc strcat{a b}{return a$b}
或更一般的:proc strcat args{join$args”“}
你可以使用返回级别0$a$b
的反向滑动来添加,不需要专门的过程
或字符串猫
。这与我在发布Q后所做的研究相匹配,所以我会说这就是答案。至少在有人来证明我们都错了并且遗漏了一些明显的东西之前;-)而返回-级别0
起作用(实际上相当好)…我们添加了string cat
,这样我们就不必记住那个特别的晦涩。可以使用返回级别0$a$b
添加一个backflip,不需要专门的proc
或string cat
。这与我发布Q后所做的研究相匹配,所以我会说这是答案。至少在l有人来告诉我们,我们都错了,并且遗漏了一些明显的东西;-)而返回-级别0
工作(实际上相当好)…我们添加了字符串cat
,这样我们就不必记住那个特别的晦涩了。