Почему TCL не использует знак доллара перед именами переменных при вызове «набора»?

Я просто собираюсь использовать Perl в качестве сравнения здесь:

$foo = 5;
print $foo;

устанавливает переменную $ foo - 5, а затем печатает содержимое переменной (обратите внимание, что $ FOO всегда доступна как $ foo ).

В TCL:

set foo 5
puts $foo

делает то же самое, что и аналог PERL.

Почему TCL не устанавливает переменные с помощью «$», но нуждается в «$» для доступа к переменной? Почему это верно для процедур тоже (например Proc Bar {спам-яйца} {...} )? Для меня код TCL выглядит , как это выглядит , как это (в псевдокоде):

"foo" = 5 # Setting a string?
puts $foo # "$foo" is not defined.

(мои комментарии только отражают то, что, кажется, происходит, не то, что происходит).

Еще один момент, которую я хочу добавить, это ясность этого:

set foo foo

Да, я всегда мог бы сделать Set Foo «Foo» , но не Установить $ Foo Foo Более последовательно?

Из того, что я знаю, «foo» может быть переменной или строкой, в зависимости от ситуации, как видно в моем последнем примере ( Set Foo foo = Установите строку VAR ), но я не получаю этот синтаксис (может быть, потому что я привык к питону ...)

7
задан D K 4 September 2011 в 13:03
поделиться