与之间的差异+;=并添加到Kotlin中的可变列表中
在查看了一个可变列表的与之间的差异+;=并添加到Kotlin中的可变列表中,kotlin,Kotlin,在查看了一个可变列表的+=之后,我无法立即找出它是什么,我的想象是I=I+1,其中I是一个整数,这在下面的代码中没有意义,但调试后我意识到它只是在列表中添加了一项,所以我的问题是,使用+=将项目添加到列表中,而不仅仅是使用mutableList.add(项目),至少在我的例子中,它更具可读性,这会有什么不同。先谢谢你 musicSource.forEach { mediaItem -> val albumMediaId = mediaItem.album.urlEn
+=
之后,我无法立即找出它是什么,我的想象是I=I+1
,其中I
是一个整数,这在下面的代码中没有意义,但调试后我意识到它只是在列表中添加了一项,所以我的问题是,使用+=
将项目添加到列表中,而不仅仅是使用mutableList.add(项目),至少在我的例子中,它更具可读性,这会有什么不同。先谢谢你
musicSource.forEach { mediaItem ->
val albumMediaId = mediaItem.album.urlEncoded
val albumChildren = mediaIdToChildren[albumMediaId] ?: buildAlbumRoot(mediaItem)
albumChildren += mediaItem
}
没有区别
+=
是一个内联运算符,在MutableCollections.kt
中,它的实现是:@kotlin.internal.InlineOnly
public inline operator fun <T> MutableCollection<in T>.plusAssign(element: T) {
this.add(element)
}
@kotlin.internal.InlineOnly
公共内联运算符fun MutableCollection.plusSign(元素:T){
this.add(元素)
}
如您所见,它使用了add()
方法你可以用也可以不用。这是你的选择
这是更可读的
x=x+1
,但我们倾向于使用x++
+=
对于可变列表(如果您使用),编译器将执行以下步骤:- 如果对应的二进制函数(即plusSign()的plus()是
也可用,报告错误(歧义)
- 确保其返回类型为Unit,否则报告错误
- 为a.plusaSign(b)生成代码
- 否则,尝试为a=a+b生成代码(这包括类型检查:a+b的类型必须是a的子类型)
add
可变列表功能:add()
还有在特定索引中添加元素的选项,例如add(索引:Int,元素:E)
文件
这是科特林的惯例之一
编译器将像
a+=b
这样的表达式转换为a.plusAssign(b)
如果typea
实现了plusAssign
运算符函数。它赋予你编写更具表现力的代码的能力。我同意x++
对一个数字的看法,因为这是我们学习编程语言基础知识的方式,但是+=
对列表来说对我来说是新事物。@SaiKiran我从不使用+=作为列表他。。。但我觉得可以开始使用它,因为我们需要适应事物并重新考虑我们所学的基本知识。科特林有更多有趣的事情要关注。