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中的可变列表中_Kotlin - Fatal编程技术网

与之间的差异+;=并添加到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
    可变列表功能:
  • 如果已添加元素,则返回true;如果已添加集合,则返回false 不支持重复项,并且元素已包含在中 收藏

    注意:请不要忘记
    add()
    还有在特定索引中添加元素的选项,例如
    add(索引:Int,元素:E)

    文件

    这是科特林的惯例之一


    编译器将像
    a+=b
    这样的表达式转换为
    a.plusAssign(b)
    如果type
    a
    实现了
    plusAssign
    运算符函数。它赋予你编写更具表现力的代码的能力。

    我同意
    x++
    对一个数字的看法,因为这是我们学习编程语言基础知识的方式,但是
    +=
    对列表来说对我来说是新事物。@SaiKiran我从不使用+=作为列表他。。。但我觉得可以开始使用它,因为我们需要适应事物并重新考虑我们所学的基本知识。科特林有更多有趣的事情要关注。