在 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) }
我经常编写非常复杂的 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) }