Я изучаю Kotlin для Android.Я использую класс данных.Я пытаюсь использовать компонентные функции класса данных.Я заметил, что я получаю компонентные функции для переменной, только если переменная имеет тип «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))
}
, я получу доступ к функциям компонента.
Редактировать: Я публикую полный класс занятий
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() {
}
}
Итак, мой вопрос, пожалуйста, дайте мне знать, если мое понимание верно?Если да, то почему это так, потому что очень легко получить доступ к компонентным функциям, если количество параметров меньше.
Спасибо:)