2014-11-20 6 views
1

Когда я преследую свою работу с кодом Tcl, удивлен выводом нижеследующего кода.Использование split с точкой с запятой в Tcl

#!/usr/bin/tclsh 
puts [split {a:b:c:d} :] 
puts [split {a;b;c;d} ;] 
puts [split {a-b-c-d} -] 
puts [split {a b c d} ]; # 'space' will be taken as split-char here. 

Выход:

a b c d 
{a;b;c;d;} 
a b c d 
a b c d 

Как вы можете видеть, {a;b;c;d;} список с одним элементом.

С ползучей в качестве разделителя char, split возвращает весь ввод как один список с одним элементом, вместо того, чтобы предоставлять каждое слово в качестве каждого элемента для этого списка.

ответ

3

Точка с запятой также является необязательным индикатором конца инструкции.

Try:

puts [split {a;b;c;d} {;}] 

Я задаюсь вопросом, почему это не дает синтаксическую ошибку, хотя.

+0

Спасибо, Брэд. Я забыл об этом. Но я не получил никаких ошибок. – Dinesh

+0

Вещь внутри '[' brackets'] 'является _script_. Точка с запятой - это вполне разумная вещь, которую можно положить туда. –

+0

Я вижу ... так что он разбирается вне, а не слева направо. 'puts [split {a; b; c; d} {;}; # semis are special] \ n ] ' –