文章目录

  • 一、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

【Kotlin】标准库函数 ③ ( with 标准库函数 | also 标准库函数 )相关推荐

  1. 内控体系建设五步骤_进一步完善环境保护标准体系建设 ——《国家环境保护标准“十三五”发展规划》解读...

    ◆中国环境报记者郭薇 为进一步完善环境保护标准体系,充分发挥标准对改善环境质量.防范环境风险的积极作用,在充分总结"十二五"环境保护标准工作基础上,环境保护部近日印发了<国家 ...

  2. 2020身高体重标准表儿童_2020年儿童标准身高体重表发布,对比看看,你家孩子达标了吗?...

    下载好向圈APP可以快速联系圈友 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 说起孩子的身高,恐怕没有父母不关注.尤其到了春天,长高的"黄金季"来了,都恨不得孩子在这个 ...

  3. 江苏省高中计算机课程标准,教育部普通高中信息技术课程标准

    目     录Fyy江苏省大港中学 一.课程性质Fyy江苏省大港中学 二.课程的基本理念Fyy江苏省大港中学 三.课程设计思路Fyy江苏省大港中学 四.课程目标Fyy江苏省大港中学 五.内容标准Fyy ...

  4. php集成paypal接口,PHP中集成PayPal标准支付,php集成paypal标准_PHP教程

    PHP中集成PayPal标准支付,php集成paypal标准 PayPal支付功能其实一直在更新文档和接口,这里说的是一个简单的支付功能大概流程如下 1,在网站的结账页面,设置一个提交到PayPal网 ...

  5. 团体标准的意义,办理团体标准的好处

    国家鼓励社会团体(学会.协会.商会.联合会等)按照一定的程序制定团体标准.团体标准有哪些好处呢? 办理团体标准的好处及意义: 1.提高企业品牌影响力和竞争力: 2.引领行业发展,并有机会申报国家级奖项 ...

  6. C++标准库分析总结(一)——<标准库简介>

    目录 1 你应该具备的基础 1.1 你应该具备的基础 1.2 我们的目标 2 标准库介绍 2.1 C++标准库与C++标准模板库二者关系及表现形式 2.2 STL六大部件 2.3 STL的简单使用 2 ...

  7. 计算机b级机房建设标准,A类机房建设标准和B类机房建设标准【全国施工】

    选择机房位置时,应远离强噪声源.粉尘.油烟.有害气体,避开强电磁场干扰.机房.走廊等有关地段的土建工程须全部竣工,室内墙壁充分干燥.机房主要门的大小应满足设备的搬运需要,房门锁和钥匙齐全.具备通风设备 ...

  8. 信息网络传播中的服务器标准,信息网络传播行为的界定标准研究

    摘要: 网络技术的发展日新月异,具体保护问题也更复杂多变.网络传播技术的便捷性,隐秘性也使得网络环境下的著作权侵权事件时有发生.现阶段规范有效处理信息网络传播行为的界定标准(以下简称界定标准)之争,明 ...

  9. paypal for php,PayPal网站付款标准版(for PHP),paypal标准版_PHP教程

    PayPal网站付款标准版(for PHP),paypal标准版 简单整理一下PHP项目整合PayPal支付功能. 一.表单的构建: form> 二.IPN验证部分 phpclasspaypal ...

  10. JS UMD深入学习(二)—— node_module是commonjs标准,工程目录是ES6标准

    文章目录 问题描述 如何将自己的组件适应nodejs 和 浏览器两个环境? UMD 代码模板 node_module是nodejs环境,代码是浏览器环境 场景:在src目录下编写一个UMD 模块作为配 ...

最新文章

  1. Java排序算法——希尔排序
  2. Science背靠背: NLR受体介导植物抗病反应新机制
  3. R语言使用geompointdensity包的geom_pointdensity函数将散点图和密度图结合起来、使用viridis包的scale_color_virdis函数为密度数据添加调色板色彩渐变
  4. BZOJ3075[USACO 2013 Mar Gold 3.Necklace]——AC自动机+DP
  5. 遗传算法在JobShop中的应用研究(part1: 绪论)
  6. 一个还不错的源码解析网站
  7. 【Tiny4412】Tiny4412编译和烧写uboot
  8. 小程序FMP优化实录,大厂面试题汇总
  9. python实现归并排序
  10. python api框架 hook_python学习之hook钩子的原理和使用
  11. 简述软件黑盒测试的方法,简述什么是黑盒测试方法
  12. Duplicate Net Names Wire Net......
  13. div水平垂直居中的常用方法
  14. 人脸识别活体检测技术
  15. Excel中数据截取
  16. 种草营销这样干 小红书KOC素人和KOL达人组合种草推广
  17. 5G云游戏革命风云已起,各方势力谁执牛耳
  18. 修改文件后是否需要重启服务器
  19. 【Django】settings
  20. pythonpost请求修改编码格式_Python请求编码POST d

热门文章

  1. 如何查找APP漏洞并渗透测试 解决网站被黑客攻击
  2. 利用CANoe Vector LDF Explorer Pro创建LDF文件
  3. Python 二分查找:bisect库的使用
  4. 字体反爬虫处理猫眼(数字)
  5. Android版本对照
  6. 现在好的测试缺陷管理工具都有哪些啊?
  7. [ web 漏洞篇 ] 常见web漏洞总结之 SQL 注入总结
  8. spring之----事务
  9. 深度学习数学基础之线性代数
  10. 20 张图表达程序员的心酸