我正在运行一个已嵌入到另一个系统中的TCL8.5的化身。该系统将接受并正确执行如下命令:
uniformDist minAndMax {1 10}
其中uniformDist是一些我没有内部可见性的对象。
我希望能说出这样的话:
set M 1000
uniformDist minAndMax {1 M}
但这行不通。也不设置M 1000 uniformDist minAndMax {1 $M}
我试过:
u minAndMax {1 [eval $M]}
和
u minAndMax {1 [eval M]}
这两样都不管用。
错误信息是:
期望一个实际值:无法从:“$M”错误转换:在解析对时期望更少的参数错误
或
期望一个实际值:无法从:“[eval”错误:在解析对时预期较少的参数错误“
tcl这样做的正确方式是什么?
发布于 2016-11-09 14:03:20
变量替换使用$
和变量的名称(例如$M
或${M}
)表示。
这不管用:
uniformDist minAndMax {1 $M}
因为大括号阻止替换:$M
只是(子)字符串‘美元,大写m’。
这工作:
uniformDist minAndMax [list 1 $M]
因为列表中的参数将在列表{1 1000}
返回并传递给uniformDist
之前进行计算。
表单"1 $M"
也可以工作,可以使用命令替换[set M]
代替上面的变量替换。
文档:Tcl语言语法概述
https://stackoverflow.com/questions/40508430
复制相似问题