目录

总结:

一、apply 用法: info.apply{}

二、run用法 : info.run{}

三、let用法:info.let{}

四、with用法 : with(info)

五、also:info.also{} //返回info本身



总结:

apply、let、run、with是kotlin里面常见的内置函数

apply 里面可以使用this,返回this

run里面可以使用this,返回自定义

let 里面不可以使用this,返回自定义

with和run使用场景一样,只不过和run的调用方式不一样

also里面可以使用it,返回调用对象本身。

一、apply 用法: info.apply{}

1、apply函数返回类型,返回info本身(this)

2、apply函数的匿名函数里面持有的this == info,就是info本身(因为T.()的原因)

data class ApplyTest(var name : String , var age : Int)
fun main(){var name : String? ;name = "lidongxu" ;var applyTest = ApplyTest("menshen" , 34)applyTest.apply {println("Apply CodeBlock LetTest1 name = {$name} , age = {$age}")this.age = 100println("Apply CodeBlock LetTest2 name = {$name} , age = {$age}")}println("applyTest name = {${applyTest.name} , age = {${applyTest.age}")//给StringBuilder扩展一个apply函数fun StringBuilder.myApply(block: StringBuilder.() ->Unit) : StringBuilder {block()return this}var sb = StringBuilder("123")sb.myApply {append("456")append("654")}println(sb)
}
/*** 打印结果*  Apply CodeBlock LetTest1 name = {macoli} , age = {34}*  Apply CodeBlock LetTest2 name = {macoli} , age = {100}*  applyTest name = {menshen , age = {100}*  123456654*/

二、run用法 : info.run{}

1、run函数返回类型,根据最后一行而定

2、run函数的匿名函数里面持有的this == info,就是info本身(因为T.()的原因)

//除了返回值不一样,其余和上面例子一样的

三、let用法:info.let{}

1、let函数返回类型,根据最后一行而定

2、let函数内it相当于info

//使用let做空判断
fun main(){println(judgeMethod("麦克LI"))
}fun judgeMethod(value : String?) : String {return value?.let {"欢迎光临 , $it"} ?: "啥都没有进来干啥"
}

四、with用法 : with(info)

with和run一样,只不是调用方式不一样,with相当于是全局函数

fun main(){var test = "李东旭"var v1 = with(test , ::getStrLen)var v2 = with(v1 , ::getStrLenStr)println(v2)//输出"test长度是 $value"
}fun getStrLen(value : String) = value.length
fun getStrLenStr(value : Int) = "test长度是 $value"

五、also:info.also{} //返回info本身

fun main(){alsoTest()
}
fun alsoTest() {var r = "ILoveChina".also {println("ALSO CODE BLOCK $it")println("ALSO CODE BLOCK ${it.toUpperCase()}")it.forEach {print("CHAR $it , ")}println()}println("OUTOF ALSO CODE BLOCK $r" )
}

Kotlin学习之----内置函数apply、let、run、with、also的使用相关推荐

  1. python学习总结----内置函数及数据持久化

    python学习总结----内置函数及数据持久化 抽象基类(了解)- 说明:- 抽象基类就是为了统一接口而存在的- 它不能进行实例化- 继承自抽象类的子类必须实现抽象基类的抽象方法 - 示例:from ...

  2. Python学习(14)--内置函数

    Python学习(14)--内置函数 1.Python内置函数 在Python中有很多的内置函数供我们调用,熟练的使用这些内置函数可以让编写代码时事半功倍,所谓内置函数就是那些Python已经预定义并 ...

  3. Kotlin基础学习 --- 内置函数apply、let

    apply内置函数 fun main(){val buffer = "i am buffer "//常规方式println("buffer的字符长度是:${buffer. ...

  4. SQLite学习手册(内置函数)

    一.聚合函数: SQLite中支持的聚合函数在很多其他的关系型数据库中也同样支持,因此我们这里将只是给出每个聚集函数的简要说明,而不在给出更多的示例了.这里还需要进一步说明的是,对于所有聚合函数而言, ...

  5. python函数手册_python学习手册——内置函数(上)

    内置函数 前面使用过一些函数,有的同学会疑问我没有导入这个函数,为什么可以直接使用? 因为这些函数都是一个叫做builtins模块中定义的函数,而builtins模块默认在Python环境启动的时候就 ...

  6. 【Python学习】内置函数(不断更新)

    关于常用在for循环中的range函数 python range() 函数可创建一个整数列表,一般用在 for 循环中. 函数语法 range(start, stop[, step]) 参数说明: s ...

  7. Excel VBA 学习总结 - 内置函数

    了解VBA与Excel内置的函数,能够使我们处理起任务来事半功倍.这些函数不仅使用方便,而且效率一般都比较高(有些是例外的,特别是某些工作表函数),比我们自己写的要高效的多. 1. VBA内置的函数  ...

  8. kotlin学习笔记——内联函数

    在Kotlin中,使用inline修饰符标记内联函数. 与普通函数不同,内联函数在编译时被替换掉,不是真正的函数调用. 如kotlin提供的with函数,如下: @kotlin.internal.In ...

  9. python学习之- 内置函数

    内置方法:1:abs():取绝对值2:all():当可迭代对象里所有均为真时结果为真. all([1,2,3])3:any():当可迭代对象里任意一个数据为真结果即为真.any([0,1,2])4:a ...

最新文章

  1. android 生成签名命令
  2. python数组和列表_Python-01矩阵、数组和列表等的总结
  3. 控制反转(IoC) ? 工厂模式?
  4. POE交换机应用技术知识大全
  5. .net Kafka.Client多个Consumer Group对Topic消费不能完全覆盖研究总结(一)
  6. 用C#实现MVC(Model View Control)模式介绍
  7. kafka为什么用java重写,kafka怎么发布订阅 怎么在java中实现
  8. ASP.NET 2.0中的页面输出缓存
  9. Linux安装gcc编译环境出错
  10. mysql个人记账系统_个人记账系统
  11. 习题 6.13 编一程序,将两个字符串连接起来,不要用strcat函数。
  12. 如何在线批量将PDF转换成JPG格式
  13. Nginx 实现域名访问以及反向代理
  14. 数据结构 第七章 图(图的概念和存储)
  15. java实现关键字查询_SpringData关键字查询实现方法详解
  16. 输入手机号查询信息C语言,简单个人电话号码查询系统.doc
  17. sql部分注入方式的学习
  18. 51单片机入门——Proteus 8 Professional的使用
  19. mysql连接数据了的dep_MySQL数据库基础
  20. Mycat概述及基本使用

热门文章

  1. MUV LUV EXTRA 2019CCPC秦皇岛站J
  2. 如果Linux下突然什么命令都无法识别了解决方法
  3. Java增强 for 循环
  4. 二进制的编码(原码、反码、补码)
  5. 微信小程序-网络请求封装
  6. 为工具箱添加CSKin选项卡
  7. 0基础如何学习软件测试?一文从2方面带你系统学习
  8. 教你如何专业地故弄玄虚,成为一代大神
  9. 小程序与api 的链接
  10. Eclipse Java汉化