我正在Specman E中开发一些RTL检查程序,并使用类型转换来处理命令行参数。
代码如下,
if(get_symbol("SWITCH").as_a(uint) > 10) {
do something;
};
命令行有一个选项SWITCH = 10。问题是如果没有错误的开关,测试将失败。
*** Error: Looking for a number but found 'an empty string'
如何避免此错误?是否有方法为转换运算符赋予一些默认值,以便每当它处理null时它返回零而不是?当然,我可以先检查字符串是否为空,然后继续。但我想避免使用额外的一行,看看我是否可以使用as_a
。
感谢。
答案 0 :(得分:1)
这是从字符串到数字的转换方式 - 如果它不是数字,则会出错。
您可以将其包装在try
块中以捕获错误,但如果您确定唯一的其他可能性是空字符串(而不是任何其他非数字字符串),那么最好的解决方案就是检查字符串是否为空。
答案 1 :(得分:0)
我担心如果没有多余的话,你就无法解决这个问题。
.as_a()
是string
对象的函数,但如果在命令行中未定义get_symbol()
,null
将返回SWITCH
字符串。< / p>