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

如何修复Android Kotlin中使用StringBuilder时出现的‘A multiline expression should start on a new line’错误?

如何修复Android Kotlin中使用StringBuilder时出现的‘A multiline expression should start on a new line’错误?

嗨,我之前也碰到过Ktlint这个规则的问题,其实根源在于多行表达式的换行位置不符合规则要求。你的代码里把StringBuilder()和赋值符号=放在了同一行,后面的链式调用又单独换行,这就触发了multiline-expression-wrapping规则——它要求跨多行的表达式必须从赋值符号的下一行开始。

给你两种解决方法,都能符合Kotlin最佳实践和Ktlint规范:

方法一:调整换行与缩进

把StringBuilder()移到赋值符号的下一行,同时保持链式调用的层级缩进,这样就满足规则要求了:

for (person in persons) {
    val logMessage = 
        StringBuilder()
            .append("ID: ${person.id}, ")
            .append("Name: ${person.name}, ")
            .append("Age: ${person.age}, ")
            .toString()

    HyperLog.d(TAG, logMessage)
}

顺便提一句:Kotlin里变量名应该遵循小驼峰命名法,所以建议把Persons改成persons,person.Id改成person.id,这也是团队协作中的通用规范哦。

方法二:使用Kotlin推荐的buildString函数

Kotlin标准库提供了buildString高阶函数,专门用于构建字符串,写法更简洁,而且天然符合Ktlint规则,还省去了手动调用toString()的步骤:

for (person in persons) {
    val logMessage = buildString {
        append("ID: ${person.id}, ")
        append("Name: ${person.name}, ")
        append("Age: ${person.age}, ")
    }

    HyperLog.d(TAG, logMessage)
}

这种写法是Kotlin官方推荐的字符串构建方式,代码可读性更强,也更符合语言风格。

如果调整后还是有问题,可以检查下你的Ktlint配置是否有自定义规则,但上面两种写法都是符合默认规则的,应该能顺利解决这个错误。

备注:内容来源于stack exchange,提问作者Ahsan Murtaza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 09:59:49