Много операторов ИЛИ в tclsh

Я пытаюсь выполнить в tclsh следующий код:

set t 2
if { $t > 0 || $t < 30 || $t < 20 } { puts yes }

В оболочке tclsh я получаю следующую ошибку:

syntax error in expression " $t > 0 || $t < 30 || $t < 20 ": character not legal in expressions

Какой персонаж здесь незаконен? Я подозревал, что проблема в '‹', но затем я выполнил эту команду:

if { $t > 0 } { puts yes }

и я получил «да», как и ожидалось.


person dada    schedule 18.03.2016    source источник
comment
Обратите внимание, что ваша логика действительна для всех значений t, поскольку -1 меньше 30, а 1000000 больше 0. Будьте очень осторожны с формальным значением ИЛИ и И (на самом деле это то же самое, что и лингвистическое значение, но, как люди, мы часто используем язык небрежно и неправильно используют ИЛИ и И, хотя другие, кажется, волшебным образом понимают, что мы имеем в виду, даже если мы логически неверны)   -  person slebetman    schedule 10.06.2019


Ответы (2)


Ваш код действителен, я бы проверил настройки вашего редактора.

person don_q    schedule 13.10.2016

Все видимые символы кажутся допустимыми. Вероятно, это какое-то невидимое пространство или что-то в этом роде; Tcl 8.4 в основном правильно обрабатывал ASCII только в выражениях (за исключением констант в кавычках).

person Donal Fellows    schedule 10.06.2019