当条件为真时停止代码



我试图建立一个安全,将检查一个条件,将是真或假。这将在一长段代码中被多次调用。如果条件为真,则会导致代码的其余部分停止。我似乎弄不明白。有人能给我指个正确的方向吗?顺便说一句,退出将不起作用,因为它会关闭我使用的整个程序。

proc _CheckEsc {} {
    if {condition is true} {
        return
    }
    return
}

proc testType {} {
    set TestResult 0
    while {$TestResult < 10} {
        _CheckEsc;
        incr TestResult
    }
    return; 
}

您可以使用return的一些更高级的特性使_CheckEsc停止它的调用者。特别是,我们可以用它来使_CheckEscbreakreturn一样发挥作用。

这个机制非常类似于在其他语言中抛出异常(事实上,你可以认为Tcl为returnbreakcontinue提供了特殊的异常类,只是事情要比幕后复杂得多)。

使调用者的循环停止

proc _CheckEsc {} {
    if {condition is true} {
        return -code break
    }
}

使调用者返回

proc _CheckEsc {} {
    if {condition is true} {
        return -level 2
        # Or, if you want to return a value from the caller:
        ### return -level 2 "the value to return"
    }
}

注意,-level选项在Tcl 8.4及之前版本中不支持;这限制了您可以使用它做的事情,但是如果您这样做,您的用例就可以工作:

proc _CheckEsc {} {
    if {condition is true} {
        return -code return
        # Or, if you want to return a value from the caller:
        ### return -code return "the value to return"
    }
}

这样的东西对你有用吗?

proc _CheckEsc {} {
    return {condition is true}; # I don't know what you have here
}
proc testType {} {
    set TestResult 0
    while {_CheckEsc && $TestResult < 10} {
        incr TestResult
    }
}

你可以通过更具体地说明_CheckEsc的作用来帮助我们。

相关内容

  • 没有找到相关文章

最新更新