在Android Studio中处理分配运算符的歧义(Kotlin)

时间:2018-06-22 05:17:57

标签: android arraylist kotlin ambiguity

我最近开始在Kotlin中开发android应用,并且遇到了这个问题。 在活动开始时,我声明了var员工Arraylist并将其分配为null,后来我在OnCreate方法中向其中添加了字符串值。

enter image description here

var employees: ArrayList<String>?= null

现在,当我向其中添加值时,我会遇到一个赋值运算符歧义错误。

enter image description here

在互联网上进行了一些研究之后,我发现带有可变列表的+ =操作有两种可能的解释-将项目附加到现有列表中,或者通过将新值附加到旧列表中来创建新列表,以及将对新列表的引用存储在变量中。 from here

现在我的问题是如何使编译器从一种解释中进行选择以添加到可变列表中。

谢谢。

2 个答案:

答案 0 :(得分:1)

您可以根据自己的需要选择一个。

如果您只想将员工添加到employees

var employees: ArrayList<String>? = null
employees?.plusAssign("employee")

如果您希望将employees分配给包含已添加员工的新List

var employees: List<String>? = null
employees = employees?.plus("employee")

请注意声明之间的区别。但是我认为最好使用add()的{​​{1}}功能添加一名员工:

ArrayList

我认为根本不需要坚持使用赋值运算符,这只是方法调用的便捷方式:)

答案 1 :(得分:0)

如果您使用val而不是var,则操作员将根据需要工作:

val myArrayList = arrayListOf<String>()

myArrayList += "firstElement" // works fine