如何将脚本转换为 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 - 如何保留或保护我的硬编码端口

如何修改代码中的硬编码问题

如何在 swift 2.0 中翻译我的硬编码字符串? [复制]

Jan Ozer:高清直播互动场景下的硬编码如何选型?

无法摆脱脚本中的硬编码延迟

rpi-rf_send 脚本 + python raspberry pi 中的硬编码射频代码