Тартиби эълон кардани майдонҳо дар дохили конструктор ва дар тани асосии data class чӣ фарқ дорад?
sobes.tech AI
Ҷавоб аз AI
Дар Kotlin, майдони, ки дар конструктори асосӣ (дар зерин номи синф дар зигзағҳо) эълон мешаванд, автоматӣ ба хусусиятҳои синф табдил меёбанд бо методҳои мувофиқ equals(), hashCode(), toString(), ва инчунин дар деструктуризатсия иштирок мекунанд.
Масалан:
data class User(val name: String, val age: Int)
Ин ҷо, name ва age хусусиятҳои синф мебошанд.
Агар ба ҷои ин, як майдон дар бадани синф (масалан, дар конструктор ё ҳамчун хусусияти оддӣ) эълон шавад, он дар методҳои data class автоматӣ тавлидшуда иштирок намекунад ва қисми деструктуризатсия намебошад:
data class User(val name: String) {
var age: Int = 0
}
Ин ҷо, age хусусияти оддӣ аст, ки дар equals ва дигар методҳо ба назар гирифта намешавад.
Бинобар ин, эълон дар конструктори асосӣ майдонро қисми "маълумот" кардани синф мекунад, дар ҳоле ки эълон дар бадани синф танҳо хусусияти иловагӣ мебошад.