2

在 Specman 中,我可以使用以下任一方法将变量转换为字符串:

x.to_string();

或者

x.as_a(string);

两者有什么区别吗?如果没有,为什么 Specman 两者都提供?

4

1 回答 1

2

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单词。

于 2009-09-23T09:22:44.973 回答