在DataWeave 2.x中组装字符串(高效)



我想在DataWeave(DW 2.0,Mule Runtime 4.3(中编写一个函数,它可以用*的横幅装饰文本消息,主要是为了帮助调用日志中的事件。

我想到的是这个,但感觉有点像鲁本·戈德堡。那么,有没有一种更有效的方式来写这篇我忽略了的文章呢?

%dw 2.0
output text/plain
var msg = "WT 3-4"
fun banner(in) =
do {
var width = sizeOf(in) + 4
var standout = 1 to (width) map "*" joinBy ""
---
standout ++ "n* " ++ in ++ " *n" ++ standout
} 
---
//banner ("Hello World")
banner (msg)

这给了我:

***************
* Hello World *
***************

**********
* WT 3-4 *
**********

分别。

我对此有很多反对意见,但这个问题主要是关于横幅串的构建。

var standout = 1 to (sizeOf(in) + 4) map "*" joinBy ""

必须有比在width参数上使用map((和joinBy((更好的方法来算术组装字符串。

对吧?

这太尴尬了。当这个想法被重构为字符串插值并使用正确的工具时,的答案看起来要好得多。

%dw 2.0
output text/plain
import repeat from dw::core::Strings
var msg = "Read the Release Notes!"
fun banner(in) =
do {
var width = sizeOf(in) + 4
var standout = repeat("*", width)
---
"$(standout)n* $(in) *n$(standout)"       
}

---
banner(msg)

然后高度合适的输出变成:

***************************
* Read the Release Notes! *
***************************

最新更新