Wie kann ich eine Liste von Zeichenketten in Specman beitreten?
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?
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", " ");