Specialize Progression first/last/OrNull functions #KT-42178
This commit is contained in:
committed by
Space
parent
cca2680c7f
commit
42c9a27b8a
@@ -1005,8 +1005,9 @@ public inline fun CharArray.findLast(predicate: (Char) -> Boolean): Char? {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first element.
|
||||
* @throws [NoSuchElementException] if the array is empty.
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the array is empty.
|
||||
*/
|
||||
public fun <T> Array<out T>.first(): T {
|
||||
if (isEmpty())
|
||||
@@ -1015,8 +1016,9 @@ public fun <T> Array<out T>.first(): T {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first element.
|
||||
* @throws [NoSuchElementException] if the array is empty.
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the array is empty.
|
||||
*/
|
||||
public fun ByteArray.first(): Byte {
|
||||
if (isEmpty())
|
||||
@@ -1025,8 +1027,9 @@ public fun ByteArray.first(): Byte {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first element.
|
||||
* @throws [NoSuchElementException] if the array is empty.
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the array is empty.
|
||||
*/
|
||||
public fun ShortArray.first(): Short {
|
||||
if (isEmpty())
|
||||
@@ -1035,8 +1038,9 @@ public fun ShortArray.first(): Short {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first element.
|
||||
* @throws [NoSuchElementException] if the array is empty.
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the array is empty.
|
||||
*/
|
||||
public fun IntArray.first(): Int {
|
||||
if (isEmpty())
|
||||
@@ -1045,8 +1049,9 @@ public fun IntArray.first(): Int {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first element.
|
||||
* @throws [NoSuchElementException] if the array is empty.
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the array is empty.
|
||||
*/
|
||||
public fun LongArray.first(): Long {
|
||||
if (isEmpty())
|
||||
@@ -1055,8 +1060,9 @@ public fun LongArray.first(): Long {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first element.
|
||||
* @throws [NoSuchElementException] if the array is empty.
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the array is empty.
|
||||
*/
|
||||
public fun FloatArray.first(): Float {
|
||||
if (isEmpty())
|
||||
@@ -1065,8 +1071,9 @@ public fun FloatArray.first(): Float {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first element.
|
||||
* @throws [NoSuchElementException] if the array is empty.
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the array is empty.
|
||||
*/
|
||||
public fun DoubleArray.first(): Double {
|
||||
if (isEmpty())
|
||||
@@ -1075,8 +1082,9 @@ public fun DoubleArray.first(): Double {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first element.
|
||||
* @throws [NoSuchElementException] if the array is empty.
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the array is empty.
|
||||
*/
|
||||
public fun BooleanArray.first(): Boolean {
|
||||
if (isEmpty())
|
||||
@@ -1085,8 +1093,9 @@ public fun BooleanArray.first(): Boolean {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first element.
|
||||
* @throws [NoSuchElementException] if the array is empty.
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the array is empty.
|
||||
*/
|
||||
public fun CharArray.first(): Char {
|
||||
if (isEmpty())
|
||||
|
||||
@@ -188,8 +188,9 @@ public inline fun <T> List<T>.findLast(predicate: (T) -> Boolean): T? {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first element.
|
||||
* @throws [NoSuchElementException] if the collection is empty.
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the collection is empty.
|
||||
*/
|
||||
public fun <T> Iterable<T>.first(): T {
|
||||
when (this) {
|
||||
@@ -204,8 +205,9 @@ public fun <T> Iterable<T>.first(): T {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first element.
|
||||
* @throws [NoSuchElementException] if the list is empty.
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the list is empty.
|
||||
*/
|
||||
public fun <T> List<T>.first(): T {
|
||||
if (isEmpty())
|
||||
|
||||
@@ -15,6 +15,138 @@ package kotlin.ranges
|
||||
|
||||
import kotlin.random.*
|
||||
|
||||
/**
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the progression is empty.
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun IntProgression.first(): Int {
|
||||
if (isEmpty())
|
||||
throw NoSuchElementException("Progression $this is empty.")
|
||||
return this.first
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the progression is empty.
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun LongProgression.first(): Long {
|
||||
if (isEmpty())
|
||||
throw NoSuchElementException("Progression $this is empty.")
|
||||
return this.first
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the progression is empty.
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun CharProgression.first(): Char {
|
||||
if (isEmpty())
|
||||
throw NoSuchElementException("Progression $this is empty.")
|
||||
return this.first
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the first element, or `null` if the progression is empty.
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun IntProgression.firstOrNull(): Int? {
|
||||
return if (isEmpty()) null else this.first
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the first element, or `null` if the progression is empty.
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun LongProgression.firstOrNull(): Long? {
|
||||
return if (isEmpty()) null else this.first
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the first element, or `null` if the progression is empty.
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun CharProgression.firstOrNull(): Char? {
|
||||
return if (isEmpty()) null else this.first
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the last element.
|
||||
*
|
||||
* @throws NoSuchElementException if the progression is empty.
|
||||
*
|
||||
* @sample samples.collections.Collections.Elements.last
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun IntProgression.last(): Int {
|
||||
if (isEmpty())
|
||||
throw NoSuchElementException("Progression $this is empty.")
|
||||
return this.last
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the last element.
|
||||
*
|
||||
* @throws NoSuchElementException if the progression is empty.
|
||||
*
|
||||
* @sample samples.collections.Collections.Elements.last
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun LongProgression.last(): Long {
|
||||
if (isEmpty())
|
||||
throw NoSuchElementException("Progression $this is empty.")
|
||||
return this.last
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the last element.
|
||||
*
|
||||
* @throws NoSuchElementException if the progression is empty.
|
||||
*
|
||||
* @sample samples.collections.Collections.Elements.last
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun CharProgression.last(): Char {
|
||||
if (isEmpty())
|
||||
throw NoSuchElementException("Progression $this is empty.")
|
||||
return this.last
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the last element, or `null` if the progression is empty.
|
||||
*
|
||||
* @sample samples.collections.Collections.Elements.last
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun IntProgression.lastOrNull(): Int? {
|
||||
return if (isEmpty()) null else this.last
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the last element, or `null` if the progression is empty.
|
||||
*
|
||||
* @sample samples.collections.Collections.Elements.last
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun LongProgression.lastOrNull(): Long? {
|
||||
return if (isEmpty()) null else this.last
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the last element, or `null` if the progression is empty.
|
||||
*
|
||||
* @sample samples.collections.Collections.Elements.last
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun CharProgression.lastOrNull(): Char? {
|
||||
return if (isEmpty()) null else this.last
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a random element from this range.
|
||||
*
|
||||
|
||||
@@ -100,10 +100,11 @@ public inline fun <T> Sequence<T>.findLast(predicate: (T) -> Boolean): T? {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first element.
|
||||
* @throws [NoSuchElementException] if the sequence is empty.
|
||||
* Returns the first element.
|
||||
*
|
||||
* The operation is _terminal_.
|
||||
*
|
||||
* @throws NoSuchElementException if the sequence is empty.
|
||||
*/
|
||||
public fun <T> Sequence<T>.first(): T {
|
||||
val iterator = iterator()
|
||||
|
||||
@@ -63,8 +63,9 @@ public inline fun CharSequence.findLast(predicate: (Char) -> Boolean): Char? {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first character.
|
||||
* @throws [NoSuchElementException] if the char sequence is empty.
|
||||
* Returns the first character.
|
||||
*
|
||||
* @throws NoSuchElementException if the char sequence is empty.
|
||||
*/
|
||||
public fun CharSequence.first(): Char {
|
||||
if (isEmpty())
|
||||
|
||||
@@ -507,8 +507,9 @@ public inline fun UShortArray.findLast(predicate: (UShort) -> Boolean): UShort?
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first element.
|
||||
* @throws [NoSuchElementException] if the array is empty.
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the array is empty.
|
||||
*/
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalUnsignedTypes
|
||||
@@ -518,8 +519,9 @@ public inline fun UIntArray.first(): UInt {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first element.
|
||||
* @throws [NoSuchElementException] if the array is empty.
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the array is empty.
|
||||
*/
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalUnsignedTypes
|
||||
@@ -529,8 +531,9 @@ public inline fun ULongArray.first(): ULong {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first element.
|
||||
* @throws [NoSuchElementException] if the array is empty.
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the array is empty.
|
||||
*/
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalUnsignedTypes
|
||||
@@ -540,8 +543,9 @@ public inline fun UByteArray.first(): UByte {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns first element.
|
||||
* @throws [NoSuchElementException] if the array is empty.
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the array is empty.
|
||||
*/
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalUnsignedTypes
|
||||
|
||||
@@ -15,6 +15,94 @@ package kotlin.ranges
|
||||
|
||||
import kotlin.random.*
|
||||
|
||||
/**
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the progression is empty.
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun UIntProgression.first(): UInt {
|
||||
if (isEmpty())
|
||||
throw NoSuchElementException("Progression $this is empty.")
|
||||
return this.first
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the first element.
|
||||
*
|
||||
* @throws NoSuchElementException if the progression is empty.
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun ULongProgression.first(): ULong {
|
||||
if (isEmpty())
|
||||
throw NoSuchElementException("Progression $this is empty.")
|
||||
return this.first
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the first element, or `null` if the progression is empty.
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun UIntProgression.firstOrNull(): UInt? {
|
||||
return if (isEmpty()) null else this.first
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the first element, or `null` if the progression is empty.
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun ULongProgression.firstOrNull(): ULong? {
|
||||
return if (isEmpty()) null else this.first
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the last element.
|
||||
*
|
||||
* @throws NoSuchElementException if the progression is empty.
|
||||
*
|
||||
* @sample samples.collections.Collections.Elements.last
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun UIntProgression.last(): UInt {
|
||||
if (isEmpty())
|
||||
throw NoSuchElementException("Progression $this is empty.")
|
||||
return this.last
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the last element.
|
||||
*
|
||||
* @throws NoSuchElementException if the progression is empty.
|
||||
*
|
||||
* @sample samples.collections.Collections.Elements.last
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun ULongProgression.last(): ULong {
|
||||
if (isEmpty())
|
||||
throw NoSuchElementException("Progression $this is empty.")
|
||||
return this.last
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the last element, or `null` if the progression is empty.
|
||||
*
|
||||
* @sample samples.collections.Collections.Elements.last
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun UIntProgression.lastOrNull(): UInt? {
|
||||
return if (isEmpty()) null else this.last
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the last element, or `null` if the progression is empty.
|
||||
*
|
||||
* @sample samples.collections.Collections.Elements.last
|
||||
*/
|
||||
@SinceKotlin("1.7")
|
||||
public fun ULongProgression.lastOrNull(): ULong? {
|
||||
return if (isEmpty()) null else this.last
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a random element from this range.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user