Como posso participar de uma lista de cordas em Specman?
Pergunta
Eu tenho uma lista que deseja imprimir:
foo: list of string;
Eu quero criar um bar
cadeia que é a concatenação dos elementos da foo
. Em Perl eu faria:
$bar = join " ", @foo;
A única maneira que eu posso pensar em fazer isso em Specman é:
var bar: string = "";
for each in foo {
bar = appendf("%s %s", bar, it);
};
Isto parece que teria um desempenho muito pobre, porque ele copia bar
sobre si mesmo para cada elemento em foo
. Existe alguma maneira melhor de fazer isso?
Solução
Há também uma função específica para isso:
str_join(list: list of string, separator: string) : string
Eu tenho certeza help str_join
lhe dará os detalhes. Há também outras funções úteis como str_match
, str_split
que você pode gostar.
Como uma dica adicional, talvez você deve imprimir-se o e Linguagem de Consulta Rápida , consulte http://www.cadence.com/Community/blogs /fv/archive/2009/06/19/send-us-suggestions-for-updating-the-e-specman-quick-reference-card.aspx .
Outras dicas
Ao escrever a pergunta que eu tropecei através do método to_string()
. Eu posso usar:
var bar: string = foo.to_string();
Este é o equivalente de Perl de:
$bar = join "\n", @foo;
Se eu quiser usar espaços posso usar:
var bar: string = str_replace(foo.to_string(), "\n", " ");