Приведение оператора к нулевой строке в Specman

Я разрабатываю некоторые средства проверки RTL в Specman E и использую преобразование типов для обработки аргумента командной строки.

Код выглядит следующим образом:

if(get_symbol("SWITCH").as_a(uint) > 10) {

  do something;

};

В командной строке есть параметр SWITCH=10. Проблема в том, что тест не проходит, если нет переключателя с ошибкой.

*** Error: Looking for a number but found 'an empty string' 

Как я могу избежать этой ошибки? Есть ли способ дать какое-то значение по умолчанию оператору приведения, чтобы всякий раз, когда он обрабатывает нуль, он вместо этого возвращал ноль? Конечно, я могу сначала проверить, является ли строка нулевой, и только потом продолжить. Но я хочу избежать этой дополнительной строки и посмотреть, смогу ли я поиграть с as_a.

Спасибо.


person cooltoad    schedule 10.03.2017    source источник


Ответы (2)


Вот как работает преобразование из строки в число — если это не число, вы получите ошибку. Вы можете обернуть его в блок try, чтобы поймать ошибку, но если вы точно знаете, что единственной другой возможностью является пустая строка (а не любая другая нечисловая строка), лучшим решением будет просто проверить, является ли строка пустой.

person Yuri Tsoglin    schedule 10.03.2017

Боюсь, вы не сможете обойти эту проблему без дополнительной линии.

.as_a() является функцией объекта string, но get_symbol() вернет строку null, если SWITCH не определено в командной строке.

person hevangel    schedule 13.05.2017