从 tcl 中的数组中取消设置元素

Unset elements from an array in tcl

我正在 TCL 中创建一个数组,其输入应该是一系列数字。 第一个 数组的两个元素应该携带删除数组中存在的元素的信息。第一个元素必须带有元素的索引 占用删除开始的数组和第二个元素 携带占用数组的元素的索引,该元素应该被删除 进步。

我是 TCL 的新手,尝试了以下代码,但遇到错误提示无法读取数组(此处为 numarray)。欢迎帮助修复它。

#! /user/bin/tclsh
puts "Enter sequence count: ";
gets stdin count;
puts "\nEnter the numbers: ";
for {set i 0} {$i < $count} {incr i} {
gets stdin numarray($i);
}

set delstart $numarray(0);
puts "Starting index: " $numarray(0);
set delend $numarray(1);

for {set $i $delstart} {$i < $delend} {incr $i} {
    unset numarray($i);
}

puts "\nNumber array after deletion :";
foreach $i [array names numarray] {
puts "$numarray($i)";
}

由于一个潜在问题,您在整个代码中遇到了多个问题。

一般来说,当你想要一个变量的值时,使用前面的$。 写入变量时,使用变量名。

我将使用您代码中的一行作为示例:

for {set $i $delstart} {$i < $delend} {incr $i} {

实际上,该命令将被解释为:

for {set 12 $delstart} {$i < $delend} {incr 12} {

12 是一个有效的变量名,但不是您正在使用的变量名。 应该是:

for {set i $delstart} {$i < $delend} {incr i} {

只有测试 $i < $delend 需要该值。