如何修复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
相关产品推荐
相关产品推荐

