2010-02-03 3 views
14

Я изучаю Tcl/Tk и не понимаю, как использовать фигурные скобки в tcl.Понимание использования фигурных скобок

Мне кажется, что они используются как для показа области, так и для объявления строк! Это ошибка (или функция)?

Является ли моя интерпретация правильной?

ответ

23

В двух словах,

  • скобки на Tcl действуют как одинарные кавычки Sh'S - группа слов (и линий) без интерполяции.
  • Двойные кавычки Tcl действуют как двойные кавычки sh - допускают интерполяцию.

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

Это эквивалентно

proc add3 {a b c} { 
    return [expr {$a + $b + $c}] 
} 

и

proc add3_weird [list a b c] "return \[expr {\[set a] + \[set b] + \[set c]}]" 

После того, как вы усваивают Tcl квотирование, вы поймете, как действительно гибкий Tcl может быть.

+2

В случае, если это не было ясно, в ответ, интерполяция означает, что замена будет происходить. Если у вас есть переменная с именем myvar = "some string", тогда {a $ myvar b} приведет к строковому литералу «a $ myvar b» ... тогда как «a $ myvar b» приведет к строковому литералу «a некоторые строки b " – RHSeeger

+0

спасибо, я думаю, я его сейчас. придется использовать tcl немного больше, чтобы полностью понять. –

+1

Мне нравится говорить «вам нужно использовать только фигурные скобки, когда вам нужно использовать фигурные скобки», что означает, что - в отличие от большинства языков - фигурные скобки - * только * для цитирования. В языке нет ничего, что когда-либо требовало бы использования фигурных скобок. Это механизм цитирования, который вы можете использовать или нет. Конечно, есть лучшие практики, которые говорят, когда разумно их использовать ... –

-2

фигурные скобки группы слова вместе, чтобы стать аргументами. вы можете найти множество материалов tcl в Интернете по поисковому запросу. Вот intro

-2

людей п Tcl

Это страница руководства для интерпретатора Tcl! Прочтите. Прочтите еще раз! Вы даже можете подумать о том, чтобы пойти в тихое место и прочитать его вслух. Это затруднит вам чтение слишком быстро. Каждая буква подсчитывается.

Как только вы окажетесь в «цитировании ада», вернитесь к этому документу и прочитайте его снова.

Существует интернет-версия на сайте: http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm

1

В ответ на комментарий Toddius Жо, я видел несколько вопросов (и у них мой сам), почему фигурные скобки используются при использовании переменных, например, $ {var}

В TCL стандартная скалярная переменная может состоять из любого символа. Однако оператор переменной замещения «$» предполагает, что вы используете буквенно-цифровые символы и символы подчеркивания (плюс разделители пространств имен «::»)

Так что если переменная задана с не буквенно-цифровым символом, например, «!», TCL будет ошибка при попытке заменить переменную.

% set myvar! 123 
123 
% puts $myvar! 
can't read "myvar": no such variable 

Использование фигурных скобок оператора подстановки не ошибка:

% set myvar! 123 
123 
%puts ${myvar!} 
123 

Это происходит потому, что TCL не выполняет замену/интерполяции на что-либо определенное в фигурные скобки.

http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm

Смежные вопросы