В tclsh
сначала создайте пустую строку:
set a []
Затем выполните следующую команду:
string length a
Оно возвращается 1
.
Я ожидаю возвращаемого значения 0
для длины пустой строки, поскольку она определяется как количество символов в строке. Но я получил 1
. Почему это? Я прочитал этот документ, но так и не понял. Я использую Tcl 8.6 в Ubuntu 22.04.
Чтобы получить значение переменной «a» в Tcl, вы используете $a
. Когда вы запускаете команду типа string length a
, вы фактически запрашиваете длину буквальной строки «a». Длина этой строки равна 1. Чтобы получить длину строки, хранящейся в переменной «a», вы должны использовать string length $a
.
Они могут скомпилироваться в одно и то же, но set a ""
определенно более идиоматично (и красиво выделено редакторами).
Также вы хотите:
set a ""
или
set a {}
нет
set a []
Последнее представляет собой попытку выполнить код, что означает «[' ...']» в Tcl.
Примечание: присвоение переменной a пустой строки чаще всего выполняется с помощью
set a ""
, а не сохранения возвращаемого значения выполнения пустого скрипта в переменной.