Kotlin-ში 'nullable' ტიპები რა არის და როგორ მუშაობენ?
sobes.tech AI
პასუხი AI-სგან
Nullable ტიპები Kotlin-те — მნიშვნელობა შეიძლება იყოს ან 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 -
ელვის ოპერატორი (
?:): საშუალებას აძლევს დართოს მნიშვნელობა, თუ გამოხატულება მარცხნივ არისnull.val lengthOrDefault: Int = str?.length ?: 0 // თუ str null-ია, lengthOrDefault იქნება 0 -
ნათელი არ-null დადასტურების ოპერატორი (
!!): გარდაქმნის nullable ტიპს არ-nullable-ად. უნდა გამოიყენოს ყურადღებით, რადგან თუ მნიშვნელობა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 შეიძლება მიენიჭოს ნებისმიერ ტიპს უშუალოდ და აშკარად არაა მითითებული.