如何将脚本转换为 Tcl 语言的硬编码版本?
Posted
技术标签:
【中文标题】如何将脚本转换为 Tcl 语言的硬编码版本?【英文标题】:How to convert script into a hard coded version of it in Tcl language? 【发布时间】:2021-12-16 02:26:25 【问题描述】:我正在寻找一种将脚本转换为其完全硬编码版本的方法。我什至不知道这种功能在软件行业是如何命名的。所以我什至不知道如何谷歌它。这里有一些我想要的例子。我不想对输出使用任何条件或迭代函数。
示例 1) foreach 案例
foreach x [list 1 2 3]
puts "x=$x"
我想将此脚本转换为:
puts "x=1" ; puts "x=2" ; puts "x=3"
示例 2)
set A 1
if $A == "1"
puts "A is 1"
else
puts "A is not 1"
我希望这是:
set A 1
puts "A is 1"
示例 3) 如果我遇到注释行或未知命令或过程,我只想将其传递给输出。
set argument 1000
UnknownProcedure $argement
现在应该是:
set argument 100
UnknownProcedure 100
提前致谢。
【问题讨论】:
有些东西不应该甚至不能像那样硬编码,例如打开文件的句柄。从字面上看,根本没有承诺两次运行将使用相同的频道名称。 Tcl 实现可以对它们做任何它想做的事情(而且它们在 Windows 上是不可重复的)。 这是记录/回放程序执行的字段(用于不同目的:调试、测试等)。 【参考方案1】:您可以尝试使用trace add execution ...
命令。如果执行,这用于在命令本身之前执行一段代码。如果您可以将命令的参数传递给您的跟踪函数并使用info frame
来获取正在执行的过程/命令名称,那么您可以使用跟踪函数写出命令的硬编码版本。
看这里:
https://www.tcl-lang.org/man/tcl8.6/TclCmd/trace.htm https://wiki.tcl-lang.org/page/info+frame【讨论】:
请参阅 ***.com/a/63832536/301832 了解如何使用trace add execution
(尽管在这种情况下您不想缩短输出)以上是关于如何将脚本转换为 Tcl 语言的硬编码版本?的主要内容,如果未能解决你的问题,请参考以下文章
Service Fabric - 如何保留或保护我的硬编码端口