在 kotlin 中使用 StringBuilder 的惯用方式?

Idiomatic way of using StringBuilder in kotlin?

我经常编写非常复杂的 toString() 方法,这个问题一直困扰着我——哪个变体更易读。下面的例子是简化的,通常有很多条件,所以单行不合适。

1) 就像简单的 java:

val sb = StringBuilder()
sb.append(data)
val string = sb.toString()

2) apply + toString() - 不是很好吗?

val string = StringBuilder().apply {
    append(data)
}.toString()

3) 运行 + toString() 最后一个语句也不高明

val string = StringBuilder().run {
    append(data)
    toString()
}

4) ??

您可以跳过 StringBuilder 并使用 Kotlin 的内置字符串插值:

val string = "$data"

或者如果事情更复杂:

val string = "The answer is: $data"

或者,使用原始字符串:

val string = 
    """
    {
        "name": $name,
        "value": $value
    }
    """

@dyukha 的答案是 100% 最佳选择: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/build-string.html

只是

val s = buildString { append(data) }