{*}与像tcl中的{*}args这样的args一起使用时,它的意义是什么
当与{*}与像tcl中的{*}args这样的args一起使用时,它的意义是什么,tcl,Tcl,当与args类似{*}args一起使用时,{*}的意义是什么? 例如:如何在类方法中使用以下内容 next a {*}$args b 不同于使用 next a $args b 它是参数/列表展开运算符。它将列表转换为许多单个单词 它作为tcl语法规则的一部分进行了记录:。这是第五条规则 例如,假设您有一个列表: set foo {a b c d} 然后调用命令: bar $foo 该命令将被解释为: bar "a b c d" bar a b c d 但如果你这样做: bar {*
args
类似{*}args
一起使用时,{*}
的意义是什么?
例如:如何在类方法中使用以下内容
next a {*}$args b
不同于使用
next a $args b
它是参数/列表展开运算符。它将列表转换为许多单个单词 它作为tcl语法规则的一部分进行了记录:。这是第五条规则 例如,假设您有一个列表:
set foo {a b c d}
然后调用命令:
bar $foo
该命令将被解释为:
bar "a b c d"
bar a b c d
但如果你这样做:
bar {*}$foo
然后,该命令将被解释为:
bar "a b c d"
bar a b c d
它是参数/列表展开运算符。它将列表转换为许多单个单词 它作为tcl语法规则的一部分进行了记录:。这是第五条规则 例如,假设您有一个列表:
set foo {a b c d}
然后调用命令:
bar $foo
该命令将被解释为:
bar "a b c d"
bar a b c d
但如果你这样做:
bar {*}$foo
然后,该命令将被解释为:
bar "a b c d"
bar a b c d
{*}
将列表元素拼接为单个参数,而不是将整个列表拼接为单个参数。{*}
将列表元素拼接为单个参数,不是将整个列表作为单个参数。您可以通过将命令list
放在调用前面,在交互式shell中自己看到差异:
list next a {*}$args b
list next a $args b
将
args
设置为某个值(最好是某个列表值),运行上述操作,您将看到调用的实际外观。您可以在交互式shell中通过将命令list
放在调用前面来查看差异:
list next a {*}$args b
list next a $args b
将
args
设置为某个值(最好是某个列表值),运行上面的操作,您将看到调用的实际外观。我强烈建议您通读tcl语法规则。与其他语言不同,tcl的整个语法规则可以放在一个页面中(只有12条规则),tcl 8.5中添加了{*}
语法(从技术上讲它不是运算符),以解决在许多用例中正确使用eval
的困难。问题出在哪里?eval
的大多数用法都是错误的,整个过程通常也很慢。我强烈建议您通读tcl语法规则。与其他语言不同,tcl的整个语法规则可以放在一个页面中(只有12条规则),tcl 8.5中添加了{*}
语法(从技术上讲它不是运算符),以解决在许多用例中正确使用eval
的困难。问题出在哪里?eval
的大多数用法都是错误的,而且整个过程通常也很慢。