В чем разница между to_string() и as_a(строка) в specman?

StackOverflow https://stackoverflow.com/questions/1464837

  •  13-09-2019
  •  | 
  •  

Вопрос

В Specman я могу преобразовать переменную в строку, используя либо:

x.to_string();

или

x.as_a(string);

Есть ли какая-то разница между этими двумя?Если нет, то почему Specman предоставляет и то, и другое?

Это было полезно?

Решение

as_a() позволяет преобразовать выражение к определенному типу, а не только к string.

Это несколько примеров из Документы

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) и to_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 слово.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top