You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

需求:基于Ballerina实现读取记录键值对的字符串插值函数

实现Ballerina的interpolateMessage函数

需要实现的函数签名如下:

function interpolateMessage(string msgTemp, *record{||} values) returns string

该函数需读取values记录中的键值对,替换msgTemp字符串中的对应占位符(约定占位符格式为{键名}),最终返回处理后的字符串。

实现代码

function interpolateMessage(string msgTemp, *record{||} values) returns string {
    string result = msgTemp;
    // 遍历所有传入的记录参数
    foreach record{||} val in values {
        // 遍历当前记录的每个键值对
        foreach string key, anydata value in val.entries() {
            // 生成目标占位符并执行替换
            string placeholder = string `{${key}}`;
            string valStr = value.toString();
            result = result.replace(placeholder, valStr);
        }
    }
    return result;
}

代码说明

  • 支持传入多个记录参数,通过外层foreach遍历所有传入的记录
  • 利用entries()方法获取记录的键值对,确保能处理任意结构的空记录类型参数
  • 动态构建占位符字符串,调用replace()方法完成模板替换
  • 将值统一转为字符串类型,保证所有类型的参数都能正确嵌入模板

使用示例

public function main() {
    string orderTemplate = "Customer {customerName}, your {product} delivery is scheduled for {date}.";
    string finalMsg = interpolateMessage(
        orderTemplate,
        {customerName: "Bob", product: "Wireless Headphones"},
        {date: "2024-05-20"}
    );
    io:println(finalMsg); 
    // 输出: Customer Bob, your Wireless Headphones delivery is scheduled for 2024-05-20.
}

内容的提问来源于stack exchange,提问作者Kavindu Gimhan Zoysa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:05:10