Возврат массивов из процедур в TCL - PullRequest
2 голосов
/ 18 марта 2012

Я хочу передать массив и вернуть массив из процедуры, ниже приведен пример кода, который я пробовал. Но получаю некоторые ошибки ..

set a(0) "11"
set a(1) "10"
set a(2) "20"
set a(3) "30"
set a(4) "40"

proc deleten somet {
    upvar $somet myarr
    for { set i 1} { $i < [array size myarr]} { incr i} {
        set arr($i) $myarr($i)
    }
    return arr
}

array set some[array get [deleten a]]
parray some

когда я запускаю этот код, я получаю следующую ошибку неправильно # args: должно быть "array set arrayName list". Я почти уверен, что не хочу использовать список, как я могу установить массив, возвращаемый из proc, в другой массив ???

1 Ответ

10 голосов
/ 18 марта 2012

Шаг, который вы пропустили, заключается в том, что вы возвращаете [array get arr], а не просто arr.

Здесь работает следующий фрагмент

set a(0) "11"
set a(1) "10"
set a(2) "20"
set a(3) "30"
set a(4) "40"

proc deleten somet {
   upvar $somet myarr
   for { set i 1} { $i < [array size myarr]} { incr i} {
       set arr($i) $myarr($i)
   }
   return [array get arr]
} 

array set some  [deleten a]
parray some

См. Как передать массивы для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...