当前位置: 首页 > news >正文

【Kotlin】标准库函数 ③ ( with 标准库函数 | also 标准库函数 )

文章目录

  • 一、with 标准库函数
  • 二、also 标准库函数


Kotlin 语言中 , 在 Standard.kt 源码中 , 为所有类型定义了一批标准库函数 , 所有的 Kotlin 类型都可以调用这些函数 ;





一、with 标准库函数



with 函数run 函数 功能是一样的 ,

其使用形式不同 , with 函数是 独立使用的 ,

调用时 , 需要 将 接收者实例对象 作为 with 函数的 参数 ;


with 函数原型 :

/**
 * 以给定的[receiver]作为接收者调用指定的函数[block]并返回其结果。
 *
 * 有关详细使用信息,请参阅[scope functions]的文档
 * (https://kotlinlang.org/docs/reference/scope-functions.html#with)。
 */
@kotlin.internal.InlineOnly
public inline fun <T, R> with(receiver: T, block: T.() -> R): R {
    contract {
        callsInPlace(block, InvocationKind.EXACTLY_ONCE)
    }
    return receiver.block()
}

with 函数的第一个参数是 receiver: T 接收者 ,

第二个参数是 block: T.() -> R , 是 T.() -> R 类型的 Lambda 表达式 ;


代码示例 :

fun main() {
    val str = with("hello") {
        capitalize()
    }
    println(str)
}

执行结果 :

Hello

在这里插入图片描述


上述 with 函数的执行效果与下面的 run 函数执行效果是相同的 ;

代码示例 :

fun main() {
    val str = "hello".run {
        capitalize()
    }
    println(str)
}

执行结果 :

Hello

在这里插入图片描述





二、also 标准库函数



also 函数 功能与 let 函数 功能 类似 ;

also 函数 将 接收者 ( 函数调用者 ) 作为参数传递给 Lambda 表达式参数 ,

并返回 接收者实例对象本身 ;


also 函数 与 let 函数 返回值不同 ,

also 函数 返回 接收者对象本身 ,

let 函数 返回 Lambda 表达式的最后一行 ;


also 函数 返回 接收者对象本身 , 那么就可以使用该特性 , 对 接收者 执行 函数式编程的 链式调用 ;


代码示例 :

fun main() {
    val str = "hello".also {
        println(it)
    }.also {
        // 该对象的生命周期仅限于该闭包
        println(it.capitalize())
    }

    // 最终打印的是最初的 接收者对象
    println(str)
}

执行结果 :

hello
Hello
hello

在这里插入图片描述

相关文章:

  • elementui el-table表格实现翻页和搜索均保持勾选状态(后端分页)
  • 内含JAVA简单概括和JAVA所需安装的软件和详细教程,想学习JAVA无从下手,这篇文章带你迈出第一步
  • C++——类和对象1
  • 转到结构化写作后的几点变化
  • 数据分析师:星图Stagraph 2.1 Crack
  • 【前端修炼场】— table 表格的构建
  • 计算机网络(二)Linux网络编程
  • FPGA基础之modelsim常见问题
  • java蛋糕店蛋糕商城蛋糕系统网站源码
  • C++的集合和映射
  • 机器学习笔记之深度信念网络(二)模型构建思想(RBM叠加结构)
  • JavaScript面试题
  • 前端项目-小米商城
  • 零基础如何入门网络安全?2023年最新,建议收藏!
  • 剑指offer----C语言版----第十四天
  • C库函数:stdio.h
  • vim光速开发,你值得拥有
  • Linux中的vim最小集、指令集及其配置
  • webpack基本使用
  • 第二章:感知机
  • 杭州打造商业航天全产业链,请看《浪尖周报》第22期
  • 靳燕出任中央戏剧学院党委副书记,原任中戏院长助理
  • 上海论坛2025年会聚焦创新的时代,9份复旦智库报告亮相
  • 手机号旧机主信用卡欠款、新机主被催收骚扰四年,光大银行济南分行回应
  • 体坛联播|皇马上演罢赛闹剧,杨瀚森宣布参加NBA选秀
  • 政治局会议:优化存量商品房收购政策,持续巩固房地产市场稳定态势