Как Вы, наверное, знаете, в языках программирования не допускается складывать переменные разных типов.
Рассмотрим пример:
Рис.1. Создаем переменные в Python.
В языке программирования Python создадим две переменные: а и b. Переменная а равна 1 (целое число), а переменная b равна '1' (строка).
При помощи оператора print type(), выведем тип двух переменных.
В результате мы смогли убедиться, что переменная a имеет тип int, а переменная b - тип str. Попытаемся сложить эти переменные.
Рис.2. Сложение разнотипных переменных в Python.
c = a + b
В результате сложения переменных разного типа произошла ошибка.
Рис.3. Изменяем тип переменных в Python.
Для того, чтобы выполнить сложение переменных разного типа, необходимо привести обе переменные к общему типу.
С помощью действия int(b) мы изменили тип переменной b из str на int и успешно выполнили сложение.
Посмотрим, как обстоят дела со сложением переменных различного типа в Mikrotik Router OS.
Рис.4. Сложение разнотипных переменных Mikrotik Router OS.
:local a "1"; :local b 1; :local c ($a+$b); :put $c;
:local a "1"; - создали переменную a и присвоили ей строку "1";
:local b 1; - создали переменную b и присвоили ей целое число 1;
:local c ($a+$b); - выполняем сложение переменных разного типа, результат заносим в переменную с;
:put $c; - выводим значение переменной c;
В результате сложения переменных разного типа не произошло ошибки.
Рис.5. Определение типов переменных в Mikrotik Router OS.
:local a "zzz"; :local b 1; :local c ($a+$b); :put [:typeof $a]; :put [:typeof $b]; :put [:typeof $c];
Выполним определение типов переменных для Mikrotik Router OS. Как мы видим, действительно было выполнено сложение переменной типа str с типом num и в результате сложения получили переменную типа num. Видимо, если выполняется сложение различных типов, Mikrotik Router OS самостоятельно изменяет тип переменной, и, если это ему удается, то операция сложения выполняется успешно.
Рис.6. Ошибка в Mikrotik Router OS.
Если невозможно изменить тип переменной, произойдет ошибка.
Евгений Рудченко специально для ASP24.