Frage

Ich habe eine Liste, die ich drucken möchten:

foo: list of string;

Ich möchte eine Zeichenfolge bar erstellen, die die Verkettung der Elemente von foo ist. In Perl ich tun würde:

$bar = join " ", @foo;

Die einzige Möglichkeit, die ich denken kann dies in Specman zu tun ist:

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

Dies scheint es sehr schlechte Leistung haben würde, weil sie Kopien für jedes Element in bar auf sich selbst foo. Gibt es einen besseren Weg, dies zu tun?

War es hilfreich?

Lösung

Es gibt auch eine spezielle Funktion für diese:

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

Ich bin sicher, help str_join gibt Ihnen die Details. Es gibt auch andere nützliche Funktionen wie str_match, str_split, die Sie mögen können.

Als zusätzlicher Hinweis, vielleicht sollten Sie sich die drucken e Sprache Quick Reference finden Sie unter http://www.cadence.com/Community/blogs /fv/archive/2009/06/19/send-us-suggestions-for-updating-the-e-specman-quick-reference-card.aspx .

Andere Tipps

Während die Frage schriftlich ich über die to_string() Methode gestolpert. Ich kann verwendet werden:

var bar: string = foo.to_string();

Dies ist das Äquivalent von Perl:

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

Wenn ich verwende Räume will, kann ich verwenden:

var bar: string = str_replace(foo.to_string(), "\n", " ");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top