Array#lastIndex property has been added to stdlib

This commit is contained in:
Sergey Lukjanov
2012-04-21 22:22:55 +04:00
parent 75255aebdc
commit 71ef123dc3
2 changed files with 45 additions and 0 deletions
+27
View File
@@ -124,3 +124,30 @@ public inline fun <T> Array<T>.isEmpty() : Boolean = this.size == 0
/** Returns the array if its not null or else returns an empty array */
public inline fun <T> Array<T>?.orEmpty() : Array<T> = if (this != null) this else array<T>()
public inline val BooleanArray.lastIndex : Int
get() = this.size - 1
public inline val ByteArray.lastIndex : Int
get() = this.size - 1
public inline val ShortArray.lastIndex : Int
get() = this.size - 1
public inline val IntArray.lastIndex : Int
get() = this.size - 1
public inline val LongArray.lastIndex : Int
get() = this.size - 1
public inline val FloatArray.lastIndex : Int
get() = this.size - 1
public inline val DoubleArray.lastIndex : Int
get() = this.size - 1
public inline val CharArray.lastIndex : Int
get() = this.size - 1
public inline val <in T: Any?> Array<T>.lastIndex : Int
get() = this.size - 1
+18
View File
@@ -39,4 +39,22 @@ class ArraysTest() : TestCase() {
assertFalse(iter.hasNext, "Invalid length (hasNext)")
}
fun testEmptyArrayLastIndex() {
val arr1 = IntArray(0)
assertEquals(-1, arr1.lastIndex)
val arr2 = Array<String>(0, {"$it"})
assertEquals(-1, arr2.lastIndex)
}
fun testArrayLastIndex() {
val arr1 = intArray(0, 1, 2, 3, 4)
assertEquals(4, arr1.lastIndex)
assertEquals(4, arr1[arr1.lastIndex])
val arr2 = Array<String>(5, {"$it"})
assertEquals(4, arr2.lastIndex)
assertEquals("4", arr2[arr2.lastIndex])
}
}