Как вы разделяете "," вместо пробела в списке TCL? - PullRequest
1 голос
/ 01 августа 2011

Итак, у меня есть список, и в TCL элементы хранятся как {"1" "2" "3"}, разделенные пробелом. Я хотел бы преобразовать этот список в {1, 2, 3.}

Спасибо!

Ответы [ 2 ]

4 голосов
/ 01 августа 2011

Вы путаете строковое представление списка с его представлением в памяти.Список в памяти - это просто упорядоченный список непересекающихся элементов.Если вам нужно «красиво напечатать» его (обычно для вывода на терминал), сделайте из него строку и затем выведите ее.Самый простой способ сделать строку в вашем случае - это использовать [join], как уже предлагалось.

Другими словами, не обманывайтесь тем, что код

set L [list 1 2 3]
puts $L

выводит «1 2 3»: это не означает, что «список хранится в виде строки с разделенными пробелами элементами».Это просто строковое представление списка по умолчанию, используемое Tcl, когда вы просите его неявно создать строку из списка, передав этот список в [puts], который ожидает строковое значение.( NB Строго говоря, «ожидает, что строковое значение» неверно по отношению к внутренним элементам Tcl, но давайте пока проигнорируем это.)

3 голосов
/ 01 августа 2011

Ваш вопрос на самом деле не имеет смысла для меня. В TCL списки хранятся внутри как строки. Когда вы говорите, что хотите перечислить {{1 ”,“ 2 ”,“ 3 ”}, я могу только предположить, что вы имеете в виду внешний вид списка. Это можно сделать с помощью команды соединения следующим образом:

% set x [list 1 2 3]

1 2 3

% set  z "\{\"[join $x "\","]\"\}"

{ "1", 2" , 3" }

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