Понимание использования фигурных скобок

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

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

Правильно ли моя интерпретация?

Ответы

Ответ 1

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

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

Тот факт, что вы используете фигурные фигурные скобки в определении proc, не является обязательным. Это самый удобный способ передать script в качестве аргумента для 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

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

В 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

Ответ 3

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

Ответ 4

man n Tcl

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

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

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