2015-03-24 27 views
5

Bu hala bana bir boş güvenlik, derleme hatası verir, ancak bu konuda>, <,> = veya < = nasıl kullanabilirim?Kotlin'de nullable tamsayılarda "büyüktür", "daha az" karşılaştırmasının doğru yolu nedir?

+0

Niçin yaşlanmayan niçin Int kullanıyorsunuz? Bir noktada yaş null olarak ayarlanmış mı? –

+0

Bazı nedenlerle burada null N'ye ihtiyacım var. –

+0

Aşağıdaki @sergey'den gelen cevap doğru ve iyi bir çözüm. Onu gözden geçirebilir ve iyi, kabul et. Değilse, lütfen ek yorumlar bırakın. –

cevap

6
var age : Int? = 0 

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

diğer çözüm delegelere kullanarak olurdu

Neyse yaş = 0 bir gün sorununa yol açabilir çeşit sihirli olduğuna inanıyoruz istisna yerine null adlı almak (hatta eşya sorunu)

1

Null birleştirici işlecini null olan Int? Eğer yo yaşıma denemek veya yaş aslında o zaman olacak atandı önce isAdult kontrol Yani

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

: NULL olmayan Int:

var age: Int? = 0 

public var isAdult: Boolean? = null 
    get() = if(age == null) null else (age ?: 0 >= 18) 
İlgili konular