Почему в Tcl длина пустой строки равна 1, а не 0?

В tclsh сначала создайте пустую строку:

set a []

Затем выполните следующую команду:

string length a

Оно возвращается 1.

Я ожидаю возвращаемого значения 0 для длины пустой строки, поскольку она определяется как количество символов в строке. Но я получил 1. Почему это? Я прочитал этот документ, но так и не понял. Я использую Tcl 8.6 в Ubuntu 22.04.

В чем разница между методом "==" и equals()
В чем разница между методом "==" и equals()
Это один из наиболее часто задаваемых вопросов новичкам на собеседовании. Давайте обсудим его на примере.
Замена символа по определенному индексу в JavaScript
Замена символа по определенному индексу в JavaScript
В JavaScript существует несколько способов заменить символ в строке по определенному индексу.
0
0
92
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Чтобы получить значение переменной «a» в Tcl, вы используете $a. Когда вы запускаете команду типа string length a, вы фактически запрашиваете длину буквальной строки «a». Длина этой строки равна 1. Чтобы получить длину строки, хранящейся в переменной «a», вы должны использовать string length $a.

Примечание: присвоение переменной a пустой строки чаще всего выполняется с помощью set a "", а не сохранения возвращаемого значения выполнения пустого скрипта в переменной.

Schelte Bron 22.03.2024 12:37

Они могут скомпилироваться в одно и то же, но set a "" определенно более идиоматично (и красиво выделено редакторами).

Donal Fellows 22.03.2024 12:50

Также вы хотите:

set a ""

или

set a {}

нет

set a []

Последнее представляет собой попытку выполнить код, что означает «[' ...']» в Tcl.

Другие вопросы по теме