¿Cuál es la diferencia entre to_string () y as_a (cadena) en Specman?
-
13-09-2019 - |
Pregunta
En Specman puedo convertir una variable a una cadena utilizando:
x.to_string();
o
x.as_a(string);
¿Hay alguna diferencia entre los dos? Si no es así, ¿por qué Specman proporcionar tanto?
Solución
as_a()
le permite convertir la expresión a un tipo específico, no sólo de cuerdas.
Estos son algunos ejemplos de la docs
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)
ACTUALIZACIÓN:
usando as_a(string)
y to_string()
no siempre da los mismos resultados.
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();
Esto imprimirá algo como esto:
lint =
104
101
108
108
111
lint.as_a(string) = "hello"
list.to_string() = "104 101 108 108 111"
Esto se debe a to_string
se ejecutará en cada elemento de la lista y luego la lista se concatena con espacios, sin embargo se as_a
convertir enteros de caracteres y concatenar, que le da la palabra hello
.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow