Come posso unire un elenco di stringhe in specman?
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?
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", " ");