Domanda

Ho un elenco che voglio stampare:

foo: list of string;

Voglio creare una stringa bar che è la concatenazione degli elementi di foo . In Perl farei:

$bar = join " ", @foo;

L'unico modo in cui riesco a pensare di farlo in specman è:

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

Sembra che avrebbe prestazioni molto scarse, perché copia bar su se stesso per ogni elemento in pippo . C'è un modo migliore per farlo?

È stato utile?

Soluzione

Esiste anche una funzione dedicata per questo:

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

Sono sicuro che help str_join ti fornirà i dettagli. Ci sono anche altre utili funzioni come str_match , str_split che potrebbero piacerti.

Come ulteriore suggerimento, forse dovresti stampare tu e Riferimento rapido lingua , vedi http://www.cadence.com/Community/blogs /fv/archive/2009/06/19/send-us-suggestions-for-updating-the-e-specman-quick-reference-card.aspx .

Altri suggerimenti

Mentre scrivevo la domanda mi sono imbattuto nel metodo to_string () . Posso usare:

var bar: string = foo.to_string();

Questo è l'equivalente di Perl:

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

Se voglio usare gli spazi posso usare:

var bar: string = str_replace(foo.to_string(), "\n", " ");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top