在查看+=
到mutableList之后,我无法立即知道它是什么,我的想象力是i = i+1
,其中i
是一个整数,在下面的代码,但是在调试之后,我意识到它只是将一个项目添加到列表中,所以我的问题是使用+=
将项目添加到列表而不是仅使用mutableList.add(item)有什么区别,至少在我看来,这更具可读性。预先感谢。
musicSource.forEach { mediaItem ->
val albumMediaId = mediaItem.album.urlEncoded
val albumChildren = mediaIdToChildren[albumMediaId] ?: buildAlbumRoot(mediaItem)
albumChildren += mediaItem
}
答案 0 :(得分:5)
没有区别。
function tmtm(){
document.getElementById("TextMobile").innerHTML = "Für weitere Informationen halten sie bitte den jeweiligen Mitarbeiter gedrückt";}
是内联运算符,在+=
中,其实现为:
MutableCollections.kt
如您所见,它使用@kotlin.internal.InlineOnly
public inline operator fun <T> MutableCollection<in T>.plusAssign(element: T) {
this.add(element)
}
方法。
您可以使用它,也可以不使用。这是你的选择。
add()
更具可读性,但是我们倾向于使用x = x + 1
。
答案 1 :(得分:2)
这是Kotlin中的operator overloading惯例之一。
如果类型a += b
实现了a.plusAssign(b)
运算符函数,则编译器会将a
之类的表达式转换为plusAssign
。它使您能够编写更具表现力的代码。
答案 2 :(得分:1)
+=
对于MutableList(如果使用),编译器执行以下步骤:-如果右栏中的功能可用
如果相应的二进制函数(即plusAssign()的plus())为 也可用,报告错误(含糊不清),
确保其返回类型为Unit,否则报告错误,
- 生成代码
为a.plusAssign(b);
否则,尝试为a = a + b生成代码(这包括类型检查:a + b的类型必须是a的子类型)。
add
for MutableList的功能:如果已添加元素,则返回true,如果集合则返回false 不支持重复项,并且该元素已经包含在其中 集合。
注意:请不要忘记add()
也可以选择在特定索引中添加元素,例如。 add(index: Int, element: E)
文档
https://kotlinlang.org/docs/reference/operator-overloading.html#assignments
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-mutable-list/add.html