Asserzione non-null
Fa parte della sezione Fondamenti del percorso Kotlin di Coddy. Lezione 17 di 93.
L’operatore di chiamata sicura e l’operatore Elvis gestiscono i valori null in modo sicuro, ma a volte hai la certezza assoluta che un valore nullable non sia null in un punto specifico del tuo codice. L’operatore di asserzione non-null !! ti permette di dire a Kotlin: "Garantisco che questo non è null."
fun main() {
val name: String? = "Alice"
val length = name!!.length // Converte String? in String
println(length) // Stampa: 5
}L'operatore !! converte un tipo nullable nella sua controparte non-nullable. Tuttavia, se il valore è effettivamente null, il programma andrà in crash con una NullPointerException:
fun main() {
val name: String? = null
val length = name!!.length // Va in crash qui!
}Quando usarlo: Usa !! solo quando hai una logica che garantisce che il valore non possa essere null, ma il compilatore non può verificarlo. Nella maggior parte dei casi, preferisci le chiamate sicure ?. o l'operatore Elvis ?:. L'asserzione di non nullità dovrebbe essere l'ultima risorsa, non la prima scelta.
Sfida
FacileScrivi una funzione getUppercaseLength che accetta un parametro text e restituisce la lunghezza della sua versione in maiuscolo.
La funzione riceve un valore stringa non nullo, ma il tipo del parametro è nullable (String?). Usa l'operatore di asserzione di non nullità !! per convertirlo in un tipo non nullable, poi concatena il metodo uppercase() e ottieni length.
Parametri:
text(String?): Una stringa nullable che è garantito contenga un valore
Restituisce: La lunghezza della versione in maiuscolo del testo (Int)
Nota: per questa sfida, l'input sarà sempre una stringa valida, mai
null. Questo simula uno scenario in cui sai che il valore esiste, ma il compilatore non può verificarlo.
Provalo tu
fun getUppercaseLength(text: String?): Int {
// Scrivi il codice qui
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori Parte 1
Operatori aritmeticiOperatore moduloAssegnazione compostaOperatori di confrontoRipasso: matematica semplice7Input/output di base
Funzione printlnTemplate di stringheInput con readLineConversione di tipoRiepilogo - Anni alla pensioneRiepilogo - Vero o falso10Funzioni
Dichiarare una funzioneParametri e argomentiValori di ritornoArgomenti denominatiValori predefinitiFunzioni a espressione singolaRiepilogo - Funzione SigmaRiepilogo - Funzione di validazione2Variabili
Val vs VarInferenza del tipoNumeriStringaBooleanoConvenzioni di denominazioneRiepilogo - Inizializzare le variabili5Operatori Parte 2
Operatori logici Parte 1Operatori logici Parte 2Operatori logici Parte 3Ternario con espressione ifRipasso - Logica semplice8Calcolatore per dividere il conto
Messaggio di benvenutoAcquisire i dati11FizzBuzz con un tocco
Panoramica del giocoLa funzione FizzBuzz3Nullabilità
Cos'è la null safetyTipi nullableOperatore di chiamata sicuraOperatore ElvisBasi della sfida sulle funzioniAsserzione non-nullRiepilogo - Accesso sicuro6Prendere decisioni
Istruzione ifIf-elseIf come espressioneEspressione whenwhen con intervalliRiepilogo - Calcolatrice semplice9Cicli
Ciclo forCiclo whileCiclo do-whilebreakcontinueIntervalli nei cicliCiclo annidatoRipasso - fattorialeRipasso - input dinamicoEsercitati da solo: Playground Kotlin