为什么字符串连接没有副作用?
fun main() {
var s1 = "abc"
val s2 = "def"
s1.plus(s2)
println(s1)
// s1 = s1.plus(s2)
// println(s1)
}我期望的是abcdef,但只得到了abc。注释代码运行良好,但看起来有点笨拙。
发布于 2021-04-05 22:35:30
plus()方法(或+操作符,在kotlin中基本上是相同的)返回连接的字符串。所以通过调用
s1.plus(s2)
//or
s1 + s2您连接了这些字符串,但您丢弃了结果。
发布于 2021-04-05 23:40:37
如下面的answer所示。您的加号操作返回独立于给定字符串的连接字符串。这是因为字符串在Kotlin中是不可变的。另一种方法是使用CharLists或buffers。
请注意,不变性有一些重要的好处。在不可变的情况下,提供对不可变对象的引用是没有问题的,因为没有人可以更改该对象。您需要更改模型中的引用以保存新值。这样可以很大程度上保证模型的一致性和完整性。另请注意,不可变对象因此是threadsafe。
https://stackoverflow.com/questions/66954617
复制相似问题