欢迎光临散文网 会员登陆 & 注册

Tcl/Tk 编程入门参考 15.将字符串当作命令执行 eval

2023-06-15 15:22 作者:象喻  | 我要投稿

eval命令在多种编程语言中都存在,作用是把字符串当作语句来执行。这个命令或者说这种功能的主要用途是拼接语句:有时我们要运行的语句(代码段)不是立刻就能确定的,如果把多个语句的结果存储在多个变量中,就会导致代码繁杂——这种情况下先把代码当作字符串来拼接,拼接完毕后再把字符串当作代码来运行,就可以简化代码。


吐槽:


用法:

eval 参数1 参数2 参数3 ...

eval会将 所有参数 拼接成类似于列表的字符串(与concat命令相同)然后当作代码运行


简单示例:

eval puts 222

>> 222


# 记得要用英文分号 ; 标记每条语句结束

set code "puts 222;"

eval $code puts 333

>>222

>>333


接下来是Tcl/Tk里eval的注意事项,有变量的代码不要用双引号包裹,因为这样会导致在执行时先进行变量替换操作,产生下面这样的错误:

eval "set bb 233;" "puts $bb"

>>can't read "bb": no such variable

在Tclsh发现"puts $bb"时会进行$bb的替换操作(把$bb替换成变量值),但此时还没有bb这个变量,导致报错。正常写法:

eval set aa 233; puts $aa

>>233



额外:

部分情况,可以用uplevel代替eval



Tcl/Tk 编程入门参考 15.将字符串当作命令执行 eval的评论 (共 条)

分享到微博请遵守国家法律