Я пытаюсь выяснить, почему в этом примере цикл while продолжается бесконечно.Дано объяснение:
Если тест помещен в кавычки, фаза замещения заменит любые переменные с их текущим значением и передаст этот тест команде while для оценки, поскольку тест имеет толькочисла, он всегда будет оцениваться одинаково
Я знаю, что обычно вы просто используете фигурные скобки вместо кавычек, но я хочу понять, почему двойные кавычки не используются.Я также понимаю, что двойные кавычки заменят значения, а фигурные скобки - нет.
set x 0
while "$x < 5" {
set x [expr {$x + 1}]
if {$x > 7} break
if "$x > 3" continue
puts "x is $x"
}
когда я печатаю x в цикле, я вижу его приращение, поэтому в случае x равен 5. Я ожидаю, что строка «set x» изменит значение на 6 и пропустит строку разрыва.Я ожидаю, что строка x> 3 пройдет, как получится, когда она проверяет «$ x <5», что «6 <5» все еще интерпретируется как истина? </p>