Junior — Middle
რა განსხვავებაა 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 და სხვა მეთოდებში.
ამიტომ, მთავარი კონსტრუქტორში გამოცხადება ქმნის ველს კლასის "მონაცემების" ნაწილად, ხოლო სხეულში გამოცხადება მხოლოდ დამატებითი თვისებაა.