gpt4 book ai didi

android - 为什么kotlin中只有val类型的对象才有组件函数?

转载 作者:太空狗 更新时间:2023-10-29 13:46:45 24 4
gpt4 key购买 nike

我正在学习适用于 Android 的 Kotlin。我正在使用数据类。我正在尝试使用数据类的组件函数。我观察到的是,只有当变量的类型为“val”时,我才会为变量获取组件函数,而我没有为“var”获取组件函数

  var customObj: CustomObj = CustomObj("Henlo", 5)
mlist.add(customObj)
for ((i, v) in mlist.withIndex()) {
//print("In loop")
// customObj.
if(mlist.get(i) is CustomObj)
println(mlist.get(i))
}

对于上述对象 customObj,我无法访问组件功能。

如果我把它改成

  val customObj: CustomObj = CustomObj("Henlo", 5)
mlist.add(customObj)
for ((i, v) in mlist.withIndex()) {
//print("In loop")
// customObj.
if(mlist.get(i) is CustomObj)
println(mlist.get(i))
}

我可以访问组件功能。

编辑:我正在发布完整的 Activity 类(class)

class MainActivity : AppCompatActivity() {
var mlist = mutableListOf<Any>()
var mlistNew = mutableListOf<String>()
//var i = Int
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
/* val numbers: IntArray = intArrayOf(1, 2, 3, 4, 5)
println("Hey!! I am array Example" + numbers[2])*/
mlist.add("this")
mlist.add("is")
mlist.add("my")
mlist.add("first")
mlist.add("kotlin")
mlist.add("sample")
mlist.add(1)
mlist.add(2)
mlist.add(3)
mlist.add(4)
mlist.add(5)
mlist.add(CustomObj("my", 2))
val customObj: CustomObj = CustomObj("Henlo", 5)
mlist.add(customObj)
for ((i, v) in mlist.withIndex()) {
//print("In loop")
// customObj.i
if(mlist.get(i) is CustomObj)
println(customObj.i)
}
// mlist.get(0)
for ((index, value) in mlistNew.withIndex()) {
// mlistNew.get(index)
}
mlistNew.add("one")
mlistNew.add("two")

// mlistNew.get(0)
}

private data class CustomObj(var i: String, var j: Int) : Any() {


}
}

所以我的问题是请让我知道我的理解是否正确?如果是,为什么会这样,因为如果参数数量较少,访问组件功能非常容易。

谢谢你:)

最佳答案

由于 android studio,这是一个有趣的错误。我不知道怎么形容。但是当我使用 var 并最初按 alt+tab 时,它不会在列表中为 component() 函数提供任何选项。然后我用“comp”过滤它,它的统计信息只显示 2 个选项,如 copy() 和哈希码,但仍然没有组件选项,只有当我写下整个单词“component”时,它才会删除所有较早的选项并仅显示组件() 选项,但不是较早的选项。当我使用 val 时情况不同 :) :) :)

关于android - 为什么kotlin中只有val类型的对象才有组件函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52475581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com