我们可以在 tcl 脚本中使用任何过滤器吗?

发布于 2024-12-10 17:52:29 字数 329 浏览 0 评论 0原文

我有一个关于for循环的问题,

for {{set loop 0} {$loop < 100} {incr loop}} {
    #do someting here
}

循环从0到99,我对循环的每个值做一些事情,但是如果循环是3,我会跳过它,那么,tcl中有没有任何过滤器可以实现它或我们应该把它写成:

for {{set loop 0} {$loop < 100} {incr loop}} {
    if {loop != 3} {
        #do someting here
    }
}

I have a question about the for loop,

for {{set loop 0} {$loop < 100} {incr loop}} {
    #do someting here
}

loop goes from 0 to 99, and I do something for each value of loop, but if the loop is 3, I will skip it, so, is there any filter in tcl to achieve it or we should write it as:

for {{set loop 0} {$loop < 100} {incr loop}} {
    if {loop != 3} {
        #do someting here
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

半寸时光 2024-12-17 17:52:29

您可以使用“继续”命令。例如:

for {set loop 0} {$loop < 100} {incr loop} {
    if {$loop == 3} continue
    # do something here
}

You can use the "continue" command. For example:

for {set loop 0} {$loop < 100} {incr loop} {
    if {$loop == 3} continue
    # do something here
}
少女情怀诗 2024-12-17 17:52:29
% proc xiter {varName "over" a z "excluding" filter body} {
    upvar 1 $varName i
    set excl [lsort $filter]
    for {set i $a} {$i < $z} {incr i} {
      if {[lsearch -exact -sorted $excl $i] < 0} {
        uplevel 1 $body
      }
    }
  }
% xiter loop over 0 10 excluding {5 3 8} {
  puts $loop
}
0
1
2
4
6
7
9
% proc xiter {varName "over" a z "excluding" filter body} {
    upvar 1 $varName i
    set excl [lsort $filter]
    for {set i $a} {$i < $z} {incr i} {
      if {[lsearch -exact -sorted $excl $i] < 0} {
        uplevel 1 $body
      }
    }
  }
% xiter loop over 0 10 excluding {5 3 8} {
  puts $loop
}
0
1
2
4
6
7
9
一袭水袖舞倾城 2024-12-17 17:52:29

for 的第一个、第三个和第四个参数可以是任意脚本,因此您可以这样做:

for {set i 0} {$i < 100} {incr i [expr {$i == 2 ? 2 : 1}]} {
    do stuff with $i ...
}

The first, third and fourth arguments to for can be arbitrary scripts, so you could do this:

for {set i 0} {$i < 100} {incr i [expr {$i == 2 ? 2 : 1}]} {
    do stuff with $i ...
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文