

It’s also worth mentioning that if you are working with mutable variables (something I would NOT recommend), using let is safer than using an if condition.

That looks concise and clean there could be some arguments against it due to not being “human-readable” but I can promise that once you get used to the use of safe calls and let methods you’ll read it clearly with no effort. If we take the example we used in our last Kotlin article about Either: fun findEmployeeByName(name: String): Either ") Not always, we might have a findEmployee method in our service where we want to express the possibility of not finding the employee by using a nullable type. That’s definitely the best way to avoid having to deal with nulls in our language, although is this always possible? This is the way that they decided to achieve null-safety in Kotlin. Non-Nullable Types in Kotlinīy default Kotlin types are not nullable, what means that it’s impossible to assign null to them. Kotlin provides different mechanisms to help solve this problem. In this article you will learn how to handle nullable types in Kotlin correctly. Having to place null check conditions everywhere just to make our code null-safe is something that probably most of us have suffered quite often. The unsafe cast in Kotlin is done by the infix operator as.One of the most annoying aspects in writing code in Java is dealing with null elements. Usually, the cast operator throws an exception if the cast isn't possible. Var properties - never, because the variable can be modified at any time by other code. Var local variables - if the variable is not modified between the check and the usage, is not captured in a lambda that modifies it, and is not a local delegated property. Smart casts cannot be used on open properties or properties that have custom getters. Val properties - if the property is private or internal or if the check is performed in the same module where the property is declared.

Val local variables - always, with the exception of local delegated properties. More specifically, smart casts can be used under the following conditions: Note that smart casts work only when the compiler can guarantee that the variable won't change between the check and the usage.
