TCL脚本:变量作为函数的参数

lib*_*lib 1 tcl

我正在尝试使用Ami的一些简单的脚本,它使用TCL,但我不能保证它是标准版本.我想从对象中读取属性并将其分配给另一个对象.

在命令窗口中,过程如下:

Image1 getTransform

0.1 0.2 0.3 0 0 0 0 0 0 1

Image2 setTransform 0.1 0.2 0.3 0 0 0 0 0 0 1

我想做同样的事情而不用手动复制粘贴getTransform的结果

以下不起作用(taht是说没有参数执行setTransform)

Image2 setTransform [Image1 getTransform] 
Run Code Online (Sandbox Code Playgroud)

要么

set myT=Image1 getTransform
Image2 setTransform $myT 
Run Code Online (Sandbox Code Playgroud)

我确信我只需要适当地使用$ [{,但到目前为止我所尝试的并没有给出任何结果

Joh*_*uhn 5

如果您使用的是Tcl 8.5或更新版本,请使用{*}参数扩展:

Image2 setTransform {*}[Image1 getTransform]
Run Code Online (Sandbox Code Playgroud)

这正是你想要的.

如果您使用的是旧版本的Tcl,那么您必须使用eval一个非常有用的命令,如果使用不当,很多事情都会出错:

eval [linsert [Image1 getTransform] 0 Image2 setTransform]
Run Code Online (Sandbox Code Playgroud)

linsert用在这里建立一个propper列表,以避免双重置换(几乎总是不好).