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?

Foi útil?

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", " ");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top