在 Specman 中,我可以使用以下任一方法将变量转换为字符串:
x.to_string();
或者
x.as_a(string);
两者有什么区别吗?如果没有,为什么 Specman 两者都提供?
在 Specman 中,我可以使用以下任一方法将变量转换为字符串:
x.to_string();
或者
x.as_a(string);
两者有什么区别吗?如果没有,为什么 Specman 两者都提供?
as_a()
允许您将表达式转换为特定类型,而不仅仅是字符串。
这些是文档中的几个示例
list_of_int.as_a(string)
list_of_byte.as_a(string)
string.as_a(list of int)
string.as_a(list of byte)
bool = string.as_a(bool) (Only TRUE and FALSE can be converted to Boolean; all other strings return an error)
string = bool.as_a(string)
enum = string.as_a(enum)
string = enum.as_a(string)
使用as_a(string)
andto_string()
并不总是给出相同的结果。
var s: string;
s = "hello";
var lint: list of int;
lint = s.as_a(list of int);
print lint;
print lint.as_a(string);
print lint.to_string();
这将打印如下内容:
lint =
104
101
108
108
111
lint.as_a(string) = "hello"
list.to_string() = "104 101 108 108 111"
这是因为to_string
将在列表的每个元素上运行,然后列表将与空格连接,as_a
但是会将整数转换为字符并将它们连接起来,从而为您提供hello
单词。