Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在kotlin中使用StringBuilder的惯用方法?_String_Kotlin_Idioms - Fatal编程技术网

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

在kotlin中使用StringBuilder的惯用方法?,string,kotlin,idioms,String,Kotlin,Idioms,我经常编写非常复杂的toString()方法,这个问题一直困扰着我——哪种变体更容易阅读。下面的例子是简化的,通常有很多条件,所以单行程序是不合适的 1) 就像在普通java中一样: val sb = StringBuilder() sb.append(data) val string = sb.toString() 2) apply+toString()-不太好是吗 val string = StringBuilder().apply { append(data) }.toStrin

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

1) 就像在普通java中一样:

val sb = StringBuilder()
sb.append(data)
val string = sb.toString()
2) apply+toString()-不太好是吗

val string = StringBuilder().apply {
    append(data)
}.toString()
3) run+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%的最佳选择:

只是

val s = buildString { append(data) } 

你在问。。。。哪个更清楚。。。这个问题怎么回答?。只是
vals=buildString{append(data)}
谢谢@dyukha-这就是我要找的!如果在第3代或更多的条件句中,插入的字符串比StringBuilder混乱得多,这是一个公平的批评。然而,最初的问题没有这个,所以我只是提供了其他选择。并非每个解决方案都适用于所有问题。:)您还可以在description中使用链式形式
StringBuilder().append(“first”).append(“second”).toString()
:“通常有很多条件,所以单行程序不适合”