¿Cómo puedo unirme a una lista de cadenas en specman?
Pregunta
Tengo una lista que quiero imprimir:
foo: list of string;
Quiero crear una cadena bar
que es la concatenación de los elementos de foo
. En Perl haría:
$bar = join " ", @foo;
La única forma en que se me ocurre hacer esto en specman es:
var bar: string = "";
for each in foo {
bar = appendf("%s %s", bar, it);
};
Esto parece tener un rendimiento muy pobre, porque copia bar
sobre sí mismo para cada elemento en foo
. ¿Hay alguna forma mejor de hacer esto?
Solución
También hay una función dedicada para esto:
str_join(list: list of string, separator: string) : string
Estoy seguro de que help str_join
le dará los detalles. También hay otras funciones útiles como str_match
, str_split
que te pueden gustar.
Como sugerencia adicional, tal vez debería imprimir usted mismo la e Language Quick Reference , consulte http://www.cadence.com/Community/blogs /fv/archive/2009/06/19/send-us-suggestions-for-updating-the-e-specman-quick-reference-card.aspx .
Otros consejos
Mientras escribía la pregunta, me topé con el método to_string ()
. Puedo usar:
var bar: string = foo.to_string();
Este es el equivalente de Perl:
$bar = join "\n", @foo;
Si quiero usar espacios, puedo usar:
var bar: string = str_replace(foo.to_string(), "\n", " ");