Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 嵌套for循环问题TCL_Loops_For Loop_Nested_Tcl - Fatal编程技术网

Loops 嵌套for循环问题TCL

Loops 嵌套for循环问题TCL,loops,for-loop,nested,tcl,Loops,For Loop,Nested,Tcl,我无法输入第二个for循环,这是格式问题吗? 给了我一些奇怪的错误。我添加睡眠只是为了检查发生了什么,所以忽略它。在您的代码中,您的内部循环仅在nl>=4时才进行计算。 nl将从[lindex$z$ml] 由于您正在增加$nl,我猜您应该更改此行: #!/bin/sh # This is a trial program puts "++++++++++++++++++++++++++++++++++++++++++++++++++" set y "0.0.0.0" set z [split

我无法输入第二个for循环,这是格式问题吗?
给了我一些奇怪的错误。我添加睡眠只是为了检查发生了什么,所以忽略它。

在您的代码中,您的内部循环仅在
nl>=4时才进行计算。
nl将从
[lindex$z$ml]

由于您正在增加$nl,我猜您应该更改此行:

#!/bin/sh
# This is a trial program

puts "++++++++++++++++++++++++++++++++++++++++++++++++++"
set y "0.0.0.0"

set z [split $y "."]
puts "z=$z"
lreplace $z 0 5
puts "z $z"
set v [llength $z]
puts "length of array=  $v"
puts "in the loop-------->\n"
puts " "
incr v -1
puts $v
for {set ml $v } { $ml >= 0} { puts "$ml =ml"} {
    for { set nl [lindex $z $ml]} { $nl >=4} { puts "$nl=nl"} {
        puts $nl
        after 2000
        lset z  $ml $nl
        incr $nl
    }
    after 2000
    incr ml -1
}               
对此,请改为:

for { set nl [lindex $z $ml]} { $nl >=4} { puts "$nl=nl"} {

对于{set nl[lindex$z$ml]}{$nl在您的代码中,只有当
nl>=4
时,您的内部循环才会进行计算。 nl将从
[lindex$z$ml]

由于您正在增加$nl,我猜您应该更改此行:

#!/bin/sh
# This is a trial program

puts "++++++++++++++++++++++++++++++++++++++++++++++++++"
set y "0.0.0.0"

set z [split $y "."]
puts "z=$z"
lreplace $z 0 5
puts "z $z"
set v [llength $z]
puts "length of array=  $v"
puts "in the loop-------->\n"
puts " "
incr v -1
puts $v
for {set ml $v } { $ml >= 0} { puts "$ml =ml"} {
    for { set nl [lindex $z $ml]} { $nl >=4} { puts "$nl=nl"} {
        puts $nl
        after 2000
        lset z  $ml $nl
        incr $nl
    }
    after 2000
    incr ml -1
}               
对此,请改为:

for { set nl [lindex $z $ml]} { $nl >=4} { puts "$nl=nl"} {

对于{set-nl[lindex$z$ml]}{$nl这可能是你想要的吗

for { set nl [lindex $z $ml]} { $nl <=4} { puts "$nl=nl"} {
#这是一个试用程序
将“+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
设置y“0.0.0.0”
设置z[拆分$y.”
放置“\$z=$z”
设置v[L长度$z]
#术语“数组”在Tcl中表示关联数组,最好使用“列表”
放入“列表长度=$v”
将“放入循环------->\n\n”
增量v-1
放置“\$v=$v”
对于{set ml$v}{$ml>=0}{incr ml-1}{

对于{set-nl[lindex$z$ml]}{$nl是否有可能是您想要的

for { set nl [lindex $z $ml]} { $nl <=4} { puts "$nl=nl"} {
#这是一个试用程序
将“+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
设置y“0.0.0.0”
设置z[拆分$y.”
放置“\$z=$z”
设置v[L长度$z]
#术语“数组”在Tcl中表示关联数组,最好使用“列表”
放入“列表长度=$v”
将“放入循环------->\n\n”
增量v-1
放置“\$v=$v”
对于{set ml$v}{$ml>=0}{incr ml-1}{


对于{set nl[lindex$z$ml]}{$nl谢谢Niall。我试过了,但nl从未递增。0=nl 0=nl 0=nl 0=nl^事实上,z中的第0个元素也没有被替换:(z=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0数组长度=4在循环中------->您的incr语句似乎有点奇怪,$nl
是一个值,您可能需要使用
incr nl
绝对正确!刚刚找到它。非常感谢您的输入Hanks Niall。我尝试过了,nl从不递增。事实上,z中的第0个元素是al因此,没有被取代:(z=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0数组长度=4在循环中------->您的incr语句似乎有点奇怪,
$nl
是一个值,您可能需要使用
incr nl
绝对正确!刚刚找到它。非常感谢您的输入您使用
lreplace$z0 5
?+1 Jerry的评论:
lreplace$z0 5
实际上,此程序中没有任何操作。该命令基于z中的元素创建一个结果列表,删除索引5之前(不存在)的所有元素,然后不将此结果列表分配到任何位置。如果您的意图是将0:s替换为5:s,这将更有效:
set z[lmap elem$z{expr{$elem==0?5:$elem}}]
应该是
incr nl
而不是
incr$nl
您使用
lreplace$z05
有什么原因吗?+1 Jerry的评论:
lreplace$z05
在这个程序中实际上没有任何作用。该命令基于z中的元素创建一个结果列表,其中所有这些元素最多为(不存在)已删除索引5,然后您不会将此结果列表分配到任何位置。如果您的意图是将0:s替换为5:s,则效果会更好:
set z[lmap elem$z{expr{$elem==0?5:$elem}]
应该是
incr nl
而不是
incr$nl
你会想更改你的
#!
行。是的,我刚刚从OP的代码中复制了它。我想如果它对他有效,我就把它留在里面。但现在我想我会删除它以避免混淆。谢谢你指出。你会想更改你的
#!
行。是的,w嗯,我刚从OP的代码中复制了它。我想如果它对他有效,我就把它留在里面。但是现在我想我会删除它以避免混淆。谢谢你指出它。