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?

¿Fue útil?

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", " ");
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top