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

Rascal中C风格define命名转驼峰命名的实现及报错问题

报错原因

你使用的脚本语言中,replaceAll 函数的返回值并非单一字符串,而是 (替换后字符串, 总替换次数, 匹配到的所有子串列表) 三元组。你直接将该三元组赋值给了声明为 str 类型的 rVal 变量,后续使用时类型不匹配,因此抛出了「期望str类型,实际得到tuple类型」的错误。
如果要保留该语句逻辑,只需要取返回三元组的第一个元素即可:

rVal = replaceAll(rVal, "_", "")[0];
更简便的实现方案

你可以用拆分拼接的逻辑替代查找替换下划线的逻辑,代码更简洁,同时还能避免下划线出现在字符串首尾时的索引越界问题:

private str camelCaseName(n) {
    // 全转小写后按下划线拆分
    str[] parts = split(toLowerCase(n), "_");
    // 没有下划线直接返回
    if (len(parts) == 1) {
        return parts[0];
    }
    // 首段全小写,后续每段首字母大写拼接
    str rVal = parts[0];
    for (int i = 1; i < len(parts); i++) {
        rVal += toUpperCase(charAt(parts[i], 0)) + slice(parts[i], 1);
    }
    return rVal;
}

内容的提问来源于stack exchange,提问作者Matty

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:54:02