كيف يمكنني الانضمام إلى قائمة السلاسل في specman؟
سؤال
ولدي قائمة التي أريد لطباعة:
foo: list of string;
وأريد أن إنشاء bar
السلسلة التي هي سلسلة من عناصر foo
. في بيرل أود أن تفعل:
$bar = join " ", @foo;
والطريقة الوحيدة التي يمكنني أن أفكر في القيام بذلك في specman هي:
var bar: string = "";
for each in foo {
bar = appendf("%s %s", bar, it);
};
وهذا يبدو وكأنه كان يمكن أن يكون الأداء الضعيف للغاية، لأنه نسخ bar
على نفسها لكل عنصر في foo
. هل هناك أي طريقة أفضل للقيام بذلك؟
المحلول
وهناك أيضا وظيفة مخصصة لذلك:
str_join(list: list of string, separator: string) : string
وأنا متأكد من أن help str_join
تعطيك تفاصيل. هناك أيضا وظائف أخرى مفيدة مثل str_match
، str_split
التي قد ترغب.
وكما تلميح إضافية، ربما يجب عليك طباعة نفسك <م> ه اللغة مرجع سريع م>، انظر> وأ href = "http://www.cadence.com/Community/blogs/fv/archive/ 2009/06/19 /-specman إرسال لنا-اقتراحات مقابل استكمال رأس الإلكترونية السريعة مرجعية card.aspx "يختلط =" نوفولو noreferrer "> http://www.cadence.com/Community/blogs /fv/archive/2009/06/19/send-us-suggestions-for-updating-the-e-specman-quick-reference-card.aspx .
نصائح أخرى
وأثناء كتابة السؤال الذي تعثرت عبر طريقة to_string()
. يمكنني استخدام:
var bar: string = foo.to_string();
وهذا هو ما يعادل في بيرل:
$bar = join "\n", @foo;
إذا أريد استخدام المساحات يمكنني استخدام:
var bar: string = str_replace(foo.to_string(), "\n", " ");