繁体   English   中英

如何在tcl中实现goto

how to implement goto in tcl

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想知道如何在tcl中实现GOTO。 我正在写一个测试案例,我说了5个步骤。 如果我的第1步失败,我不想继续前进,我想跳过现有的东西并转到一个常见的清理部分。

如果tcl中有任何GOTO命令,请帮助我。

谢谢,Ramya。

1 个回复

在Tcl中没有 goto ,并且由于相对技术原因,不可能实现一个。

但是你可以用其他方式做你想做的事情。 由于您正在处理测试用例,我希望您使用tcltest包来完成工作。 有了它,您可以非常轻松地指定清理代码:

tcltest::test test-1.1 "verify that the foo works" -setup {
    allocate some resources
} -body {
    whatever to do the test...
    return [our results]
} -cleanup {
    drop those resources
    make sure that we are nice and clean
} -result "the expected test result"

只需return就可以轻松跳过测试的主体; tcltest::test命令将检测它并将其视为结果。 通常最好尽量保持每个测试独立于其他测试:这样可以更容易地跟踪测试失败时出现的问题。

如果你没有使用tcltest ,你仍然最好重构一些你可以使用return尽早跳过的东西。 您可以将它与try…finally… (原生在Tcl 8.6中,或者在Tcler的Wiki上使用此代码 )结合起来,以简化

proc doThings {} {
    try {
        # do thing-1
        if {$no_more} return
        # do thing-2
        if {$no_more} return
        # do thing-3
        if {$no_more} return
        # do thing-4
        if {$no_more} return
        # do thing-5
    } finally {
        # do cleanup
    }
}
1 如何在 tcl 中实现 exec 命令?

可以使用 Tcl exec 函数从 Tcl 调用其他程序。 让我们使用此命令创建一个 Tcl 脚本,该脚本将采用您目前编写的所有 Tcl 代码并从中创建单个 PDF。 单个 PDF 文件的文件名应为 TCL CODE.pdf。 回想一下,Tcl foreach 命令使浏览项目列表变得非常容易。 您应 ...

2020-11-25 03:07:08 1 88   tcl
2 如何在Ruby中实现goto和label方法?

作为主题DSL的作业,我需要在Ruby中编写内联汇编程序。 我知道笑话在我们身上:Ruby 1.9如何支持Goto声明 ,但我不能使用它。 这是一个非常简单的实现,汇编器有四个寄存器 - ax , bx , cx , dx ,保存整数值,我可以在其上做一些操作,比如设置它们的值( mov ) ...

2014-01-14 17:42:51 2 2029   ruby/ goto
3 你如何在F#中实现goto?

我最喜欢的语言都有一个goto命令。 也就是说,您可以创建一个标签,然后中断程序的流程以转到标签。 这个构造的一个更有用的应用是创建一个无限循环,如下所示: 不幸的是,如果我正确地解决了编译错误,我就不能在F#中使用相同的语法。 因此,由于它本身似乎不受支持,我如何在F#中实现go ...

2011-08-19 21:05:40 5 1244   f#/ goto
5 如何在Tcl中实现队列和优先级队列?

我必须在不使用任何库的情况下在Tcl中实现队列或优先级队列。 我试图写下面的代码。 请帮助我以更好的方式在Tcl / Tk中实现队列。 创建节点 职能 删除队列 队列插入 创建队列 ...

6 如何在不使用列表的情况下在Tcl中实现堆栈?

我知道使用列表实现堆栈和队列非常容易。 但是,如何在不使用列表和列表操作函数(例如lappend和lindex情况下实现堆栈? 我在Synopsys中使用Tcl,因此堆栈中的所有项目都是电路的一部分,例如单元,端口,网络...,它们是synopsys中的集合,无法直接通过列表函数进行处理 ...

7 如何在tcl中实现二维数组

需要创建二维数组援助。 我需要创建下面的情形 由于此后的逻辑遵循上述二维数组,因此我也需要逻辑来访问单个数据(就像数组一样)。 请帮助! ...

9 我们如何在C ++中实现if -goto循环? [关闭]

我们被告知如果goto在学校循环。 教师给出的程序不起作用。 通过不工作我的意思是它被编译,但当我执行它时,输出是什么: 要实现的实际循环等效于for循环: 谢谢! ...

2015-06-30 15:42:50 3 131   c++/ loops
10 如何在C#中的API响应上在错误goto下实现?

我有ID的列表,我正在遍历这些ID的每一个以获取详细信息。 在少数情况下,API调用失败。 因此,我想跳过失败的API调用,并希望继续进行下一个ID API调用; 类似于on error goto next。 有什么可能的解决方案,即使API调用失败,foreach循环也将用于下一 ...

2018-05-02 06:38:04 2 73   c#
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM