Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the right way of using "greater than", "less than" comparison on nullable integers in Kotlin?

Tags:

kotlin

var _age: Int? = 0  public var isAdult: Boolean? = false    get() = _age?.compareTo(18) >= 0  

This still gives me a null-safety, compile error, but how can I use >, <, >= or <= in this matter?

like image 481
LEMUEL ADANE Avatar asked Mar 24 '15 02:03

LEMUEL ADANE


1 Answers

var age : Int? = 0  public val isAdult : Boolean?     get() = age?.let { it >= 18 } 

The other solution would be using delegates:

var age : Int by Delegates.notNull() public val isAdult : Boolean     get () = age >= 18 

So if you try to get age or check isAdult before age was actually assigned then you'll get exception instead of null.

Anyway I believe age = 0 is some kind magic that one day may lead to issue (even prod issue).

like image 157
Sergey Mashkov Avatar answered Oct 20 '22 00:10

Sergey Mashkov