Question

J'ai une liste que je veux imprimer:

foo: list of string;

Je souhaite créer une chaîne bar qui soit la concaténation des éléments de toto . En Perl, je ferais:

$bar = join " ", @foo;

La seule façon dont je peux penser à faire ceci dans specman est:

var bar: string = "";
for each in foo {
    bar = appendf("%s %s", bar, it);
};

Cela semble avoir de très mauvaises performances, car il copie bar sur lui-même pour chaque élément de toto . Y a-t-il une meilleure façon de faire cela?

Était-ce utile?

La solution

Il existe également une fonction dédiée pour cela:

str_join(list: list of string, separator: string) : string

Je suis sûr que help str_join vous donnera les détails. Il existe également d’autres fonctions utiles telles que str_match , str_split , qui pourraient vous plaire.

Comme astuce supplémentaire, vous devriez peut-être imprimer vous-même la e Référence rapide sur le langage , voir http://www.cadence.com/Community/blogs /fv/archive/2009/06/19/send-us-suggestions-for-updating-the-e-specman-quick-reference-card.aspx .

Autres conseils

En écrivant la question, je suis tombé sur la méthode to_string () . Je peux utiliser:

var bar: string = foo.to_string();

Ceci est l'équivalent de Perl:

$bar = join "\n", @foo;

Si je veux utiliser des espaces, je peux utiliser:

var bar: string = str_replace(foo.to_string(), "\n", " ");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top