Как я могу присоединиться к списку строк в specman?

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

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. Есть ли лучший способ сделать это?


person Nathan Fellman    schedule 22.06.2009    source источник


Ответы (2)


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

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

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

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

person danielpoe    schedule 22.06.2009
comment
Я просмотрел это, но я, должно быть, пропустил это. Спасибо! - person Nathan Fellman; 22.06.2009

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

var bar: string = foo.to_string();

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

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

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

var bar: string = str_replace(foo.to_string(), "\n", " ");
person Nathan Fellman    schedule 22.06.2009