Ի՞նչ են 'nullable' տիպերը Kotlin-ում և ինչպես են աշխատում:
sobes.tech AI
Պատասխան AI-ից
Kotlin- ում nullable տիպերը այն տիպերն են, որոնք կարող են պարունակել ինչպես արժեք, այնպես էլ null։ Դրանք հստակ նշվում են ? նշանով՝ տիպի անունից հետո։
Աշխատանքային համակարգը հիմնված է Kotlin-ի տիպային համակարգի վրա, որը կանխում է NullPointerException-ը կոմպիլյացիայի ժամանակ։ Կոմպիլյատորը պահանջում է բացահայտ null ստուգում՝ նախքան մուտք գործել nullable տիպի օբյեկտի անդամներին։
Նվազագույն միջոցները անվտանգ աշխատելու համար nullable տիպերի հետ՝
-
nullստուգումif-ով՝fun printLength(str: String?) { if (str != null) { println(str.length) // Անվտանգ կանչ՝ null ստուգումից հետո } else { println("Տող null") } } -
Անվտանգ կանչի օպերատոր (
?.): Վերադարձնում էnull, եթե օբյեկտըnullէ, հակառակ դեպքում՝ կանչի արդյունքը։val safeLength: Int? = str?.length // Եթե str null է, safeLength կլինի null -
Elvis օպերատոր (
?:): Հնարավորություն է տալիս տրամադրել նախնական արժեք, եթե արտահայտությունը ձախ կողմումnullէ։val lengthOrDefault: Int = str?.length ?: 0 // Եթե str null է, lengthOrDefault կլինի 0 -
Անհայտ ոչ-null հաստատման օպերատոր (
!!): Փոխում է nullable տիպը ոչ-null տիպի։ Ուշադրություն դարձրեք, քանի որ եթե արժեքըnullլինի, այն կբերիNullPointerException-ի։val assertedLength: Int = str!!.length // Եթե str null է, կբերի NPE -
let/run/apply/alsoֆունկցիաները՝ անվտանգ կանչով:str?.let { // Կոդը կիրականացվի միայն այն դեպքում, եթե str null չէ println("Տողի երկարությունը՝ ${it.length}") }
Kotlin-ի nullable տիպերի համակարգը զգալիորեն բարձրացնում է անվտանգությունը և նվազեցնում է NullPointerException-ի հավանականությունը՝ համեմատած այն լեզուների հետ, որտեղ null-ը կարող է նշանակվել ցանկացած տիպի առանց բացահայտ նշման։