возврат списка массивов - PullRequest
       11

возврат списка массивов

2 голосов
/ 03 августа 2011

где разница в TCL TK со списком и массивом?Я создал список из 3 массивов.

как этот в цикле

set x($idx) 1
incr idx

и позже я хочу вернуть объект "ret"

list set ret { $x $x2 $x3 }

ипроанализируйте их снова с

lassign $data x x2 x3

но это не сработает ... :( может кто-нибудь, пожалуйста, помогите мне еще раз ... черт tcl tk ...: D: D

поправьте меня, если яне правильно, невозможно построить 2dim список или массив?

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

Ваш массив называется x - вы можете ссылаться на его элементы как set x(1), set x(2) и т. Д. $ X2 и $ x3 в этом случае не имеют значения.

Если вам нужен двумерный массив, вы можете смоделировать его в TCL следующим образом:

set a(1,1) 0 ;# set element 1,1 to 0
set a(1,2) 5 ;# set element 1,2 to 5

Это может быть проще, если вы просто используете список списков

set l1 [list a b c]
set l2 [list d e f]
set lol [list $l1 $l2]
1 голос
/ 03 августа 2011

Вы можете использовать array get/set для передачи массивов в качестве аргументов процедуры / возвращаемых значений. Например:

proc someProc {arr} {
  array set x $arr
  set x(5) 0
  return [array get x]
}

Пример использования:

% set a(0) -1
% set a(1) 1

% parray a
a(0) = -1
a(1) = 1

% array set b [someProc [array get a]]

% parray b
b(0) = -1
b(1) = 1
b(5) = 0
...