LINUX.ORG.RU
Форум — Development

[tcl] слияние листа в строку

 


0

2

Есть ли в tcl полноценный аналог перлового join?

Стандартный join, как я понимаю, не подходит:

% set str1 "a b c"
a b c
% set str2 [join $str1 " "]
a b c
% lindex $str2 0
a
А правильный ответ - a b c.

★★★

Ты же не лист сливаешь, а строку.

AnDoR ★★★★★
()
% set str1 "a b c"
a b c
% lappend str2 $str1
{a b c}
% lindex $str2 0
a b c
gorky ★★
()

может быть, я совсем позабыл тикль, но там же строка - это список символов. так что же вы тогда хотели получить?

bik ★★
()

И чем же он не аналог перлового join ?

@str = ("a 1", "b 2", "c 3");
print join(",", @str) . "\n";

> a 1,b 2,c 3

set str {"a 1" "b 2" "c 3"}
puts [join $str ","]

> a 1,b 2,c 3
sdio ★★★★★
()

join совершенно не причем. В TCL только один тип, который каждая функция интерпретирует по своему. Функции для строк со _всеми_ переменными работают как со строками, функции для списков - со _всеми_ переменными как со списками, а список, грубо говоря, это строка, в которой элементы разделены пробелами.

anonymous
()
Ответ на: комментарий от bik

может быть, я совсем позабыл тикль, но там же строка - это список символов

там список - это строка, ты имел ввиду

type String = [Char]

?

Begemoth ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.