Пожалуйста, объясните пример в правиле 5 Tcl - PullRequest
1 голос
/ 20 апреля 2020

Документация (https://www.tcl.tk/man/tcl8.7/TclCmd/Tcl.htm) гласит:

Например, “cmd a {*}{b [c]} d {*}{$e f {g h}}” эквивалентно “cmd a b {[c]} d {$e} f {g h}”.

Но почему $e в скобках после замены? Откуда они берутся (и почему в слове нет других аргументов (f и {g h})?

1 Ответ

2 голосов
/ 20 апреля 2020

$e в скобках, чтобы остановить его оценку. f и {g h} не являются переменными или заключены в квадратные скобки, как c, поэтому они не нужны.

Все эти примеры также распространятся на одно и то же:

cmd a {*}[list b {[c]}] d {*}[list {$e} f {g h}]
cmd a {*}[list b {[c]}] d {*}[list \$e f {g h}]
cmd a {*}{b [c]} d {*}"\$e f {g h}"
...