Kotlin->Kotlin内置函数map、minOf、maxOf

map函数

public inline fun <T, R> Array<out T>.map(transform: (T) -> R): List<R> {
    return mapTo(ArrayList<R>(size), transform)
}
public inline fun <T, R, C : MutableCollection<in R>> Array<out T>.mapTo(destination: C, transform: (T) -> R): C {
    for (item in this) {
        destination.add(transform(item))
    }
    return destination
}
  • 函数调用过程:
    • 泛型 Array 来调用map内置函数,将一个泛型 Array 转换为泛型 List,并在转换过程中对每个元素应用一个变换函数 transform
    • 创建一个同样Size大小的ArrayList,和变换函数transform一起传给mapTo函数,将泛型 Array 每个元素应用transform函数后添加到destination集合中,并返回

minOf函数

public inline fun <T> Iterable<T>.minOf(selector: (T) -> Float): Float {
    val iterator = iterator()
    if (!iterator.hasNext()) throw NoSuchElementException()
    var minValue = selector(iterator.next())
    while (iterator.hasNext()) {
        val v = selector(iterator.next())
        minValue = minOf(minValue, v)
    }
    return minValue
}

public inline fun <T> Iterable<T>.maxOf(selector: (T) -> Float): Float {
    val iterator = iterator()
    if (!iterator.hasNext()) throw NoSuchElementException()
    var maxValue = selector(iterator.next())
    while (iterator.hasNext()) {
        val v = selector(iterator.next())
        maxValue = maxOf(maxValue, v)
    }
    return maxValue
}
  • 函数调用过程
    • Iterable<T>的子类来调用minOf函数或者maxOf函数,返回一个Float类型的最小值或者最大值
    • 拿到当前 Iterable<T>的子类的迭代器对象,遍历每个元素
    • 每个函数传入给变换函数selector,在selectorlambda表达式最后一行返回Float类型的数值,此时maxValue 为初始最小值/最大值(并不是最终的最小值/最大值),因为还没有开始轮询元素进行比较
    • 所有元素轮询比较完成后,返回最终的最小值/最大值
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值