2015-03-28 16 views
12

Ich fange gerade mit Kotlin. Ich möchte einen Bereich von 1 bis n erstellen, wobei nexcluded ist. Ich fand heraus, dass Kotlin Bereiche hat und ich kann sie wie folgt verwendenErstellen exklusive Bereiche in Kotlin

1..n

aber dies ist ein Bereich, der inclusive1 und n umfasst. Wie erstelle ich exclusive Bereiche.

Antwort

4

Nicht sicher, ob dies der beste Weg ist, aber Sie können eine Int Erweiterung definieren, die eine von (untere Grenze +1) bis (obere Grenze - 1) erstellt.

fun Int.exclusiveRangeTo(other: Int): IntRange = IntRange(this + 1, other - 1) 

Und dann ist es auf diese Weise verwenden:

for (i in 1 exclusiveRangeTo n) { //... } 

Here können Sie weitere Details finden, wie die Arbeit reicht.

43

können Sie verwenden, um die until Funktion im Kotlin stdlib:

for (i in 1 until 5) { 
    println(i) 
} 

Welche gedruckt wird:

1 
2 
3 
4 
+0

Hinweis: In Kotlin 1.1 "bis" mit ganzen Zahlen mit erzeugt nicht das gleiche optimiert Code als Schreiben: für (i in 1..n-1) {...} – BladeCoder

+0

@BladeCoder gilt das immer noch für Kotlin 1.2? – leoderprofi

+2

@leoderprofi Ja, die Dinge haben sich geändert. "bis" ist nun optimiert seit Kotlin 1.1.4 – BladeCoder