首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >tcl中的变量替换

tcl中的变量替换
EN

Stack Overflow用户
提问于 2016-11-09 13:41:43
回答 1查看 105关注 0票数 0

我正在运行一个已嵌入到另一个系统中的TCL8.5的化身。该系统将接受并正确执行如下命令:

代码语言:javascript
运行
复制
uniformDist  minAndMax  {1 10}

其中uniformDist是一些我没有内部可见性的对象。

我希望能说出这样的话:

代码语言:javascript
运行
复制
set M 1000
uniformDist  minAndMax  {1 M}

但这行不通。也不设置M 1000 uniformDist minAndMax {1 $M}

我试过:

代码语言:javascript
运行
复制
u minAndMax {1 [eval $M]}

代码语言:javascript
运行
复制
u minAndMax {1 [eval M]}

这两样都不管用。

错误信息是:

期望一个实际值:无法从:“$M”错误转换:在解析对时期望更少的参数错误

期望一个实际值:无法从:“[eval”错误:在解析对时预期较少的参数错误“

tcl这样做的正确方式是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-09 14:03:20

变量替换使用$和变量的名称(例如$M${M})表示。

这不管用:

代码语言:javascript
运行
复制
uniformDist  minAndMax  {1 $M}

因为大括号阻止替换:$M只是(子)字符串‘美元,大写m’。

这工作:

代码语言:javascript
运行
复制
uniformDist  minAndMax  [list 1 $M]

因为列表中的参数将在列表{1 1000}返回并传递给uniformDist之前进行计算。

表单"1 $M"也可以工作,可以使用命令替换[set M]代替上面的变量替换。

文档:Tcl语言语法概述

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40508430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档