Как я могу присоединиться к списку строк в specman? - PullRequest
0 голосов
/ 22 июня 2009

У меня есть список, который я хочу напечатать:

foo: list of string;

Я хочу создать строку bar, которая является объединением элементов foo. В Perl я бы сделал:

$bar = join " ", @foo;

Единственный способ сделать это в specman - это:

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

Похоже, что производительность будет очень плохой, потому что он копирует bar на себя для каждого элемента в foo. Есть ли лучший способ сделать это?

Ответы [ 2 ]

2 голосов
/ 22 июня 2009

Для этого также есть специальная функция:

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

Я уверен, help str_join даст вам детали. Есть и другие полезные функции, такие как str_match, str_split, которые вам могут понравиться.

В качестве дополнительной подсказки, возможно, вам следует напечатать краткий справочник по e Language , см. http://www.cadence.com/Community/blogs/fv/archive/2009/06/19/send-us-suggestions-for-updating-the-e-specman-quick-reference-card.aspx.

0 голосов
/ 22 июня 2009

При написании вопроса я наткнулся на метод to_string(). Я могу использовать:

var bar: string = foo.to_string();

Это эквивалент Perl:

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

Если я хочу использовать пробелы, я могу использовать:

var bar: string = str_replace(foo.to_string(), "\n", " ");
...