WHEN
maddesini >
veya <
karşılaştırması ile kullanmaya çalışıyorum.Kotlin'i Kullanma WHEN yan tümcesi <, <=, > =,> karşılaştırmaları
Bu, derlenmiyor. Bunu etkinleştirmek için normal bir boolean işleç kümesini (< < =,> =>) karşılaştırma yönteminin bir yolu var mı?
val foo = 2
// doesn't compile
when (foo) {
> 0 -> doSomethingWhenPositive()
0 -> doSomethingWhenZero()
< 0 -> doSomethingWhenNegative()
}
Sınırsız bir aralık karşılaştırması bulmayı denedim, ancak bu işi yapamadım mı? Bunu sınırsız bir aralık olarak yazmak mümkün mü?
// trying to get an unbounded range - doesn't compile
when (foo) {
in 1.. -> doSomethingWhenPositive()
else -> doSomethingElse()
}
tamam ama gereksiz çoğaltma gibi görünüyor ikinci bölümünde, bütün ifadeyi koyabilirsiniz. En azından derler ve çalışır.
when {
foo > 0 -> doSomethingWhenPositive()
foo < 0 -> doSomethingWhenNegative()
else -> doSomethingWhenZero()
}
Ancak, yıllardır yaptığımız if-else alternatifinden daha kolay olduğunu emin değilim. Bir şey gibi: Tabii
if (foo > 0) {
doSomethingWhenPositive()
}
else if (foo < 0) {
doSomethingWhenNegative()
}
else {
doSomethingWhenZero()
}
, gerçek dünya problemleri üzerinde daha karmaşıktır ve WHEN
fıkra çekici ama bu tür karşılaştırmalar için beklediğiniz gibi çalışmaz.
Dilbilgisini görmek ilginç. Yani ilk 'ifade ', booleanı döndüren bir ifade olması gerektiği gibi görünüyor, bu benim derlediğim örnekte kullandığım şey. Bu doğru mu. "In" cümlesiyle ikinci ifade, bir tür koleksiyon döndüren bir ifadedir ve "olan" sadece bir tür bildiridir. Sağ? Her neyse, her vaka için tam ifadenin burada en temiz seçenek olduğunu tahmin edin. –