Smart casts
suggest changeIf the compiler can infer that an object can’t be null at a certain point, you don’t have to use the special operators anymore:
var string: String? = "Hello!"
print(string.length) // Compile error
if(string != null) {
// The compiler now knows that string can’t be null print(string.length) // It works now!
}
Note: The compiler won’t allow you to smart cast mutable variables that could potentially be modified between the null-check and the intended usage.
If a variable is accessible from outside the scope of the current block (because they are members of a non-local object, for example), you need to create a new, local reference which you can then smart cast and use.
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents