我是Tcl的新手,面对一个了解整个概念的问题:
<name of variable> set [split "[string repeat "-,-," [columns]]-",]
columns是值为6的变量; 拆分将如何,整个字符串是哪一个?
谢谢大家
答案 0 :(得分:1)
<name of variable> set [split "[string repeat "-,-," [columns]]-",]
您必须从内到外解压缩Tcl命令,因为最里面的嵌套方括号会首先执行。
columns
是一个 proc ,希望返回一个整数。string repeat
重复“-,-”多次。-
split
应在逗号上拆分“-,-,-,...-”字符串,从而得到*“ 2 *列+ 1”连字符的列表*。 除:
set
命令看起来像:set varname value
(除非您要处理对象)set <name of variable> [split "[string repeat "-,-," [columns]]-" ,]
# ...............................................................^
演示:
set columns 6
proc columns {} {return $::columns}
set result [split "[string repeat "-,-," [columns]]-" ,]
puts $result
puts [llength $result] ;# should be 13
- - - - - - - - - - - - -
13
您可以通过以下方式获得相同的结果:
set result [lrepeat [expr {2 * [columns] + 1}] "-"]
Tcl实际上是一种非常简单的语言。整个语法只有12条规则:https://www.tcl.tk/man/tcl8.6/TclCmd/Tcl.htm