Kotlin - 标准函数(with、run和apply)

简介: Kotlin - 标准函数(with、run和apply)

Kotlin的标准函数是指 Standard.kt 文件中定义的函数,任何Kotlin代码都可以自由地调用所有的标准函数。

内置函数的总结:

let:

1.let函数返回类型,是根据匿名函数最后一行的变化而变化

2.let函数的匿名函数里持有的是it == 集合本身

apply:

1.apply函数返回以及返回类型,一直都是info,如果是aaa,则需要时aaa.length()

2.apply函数的 匿名函数里持有的是this == info本身

run:

1.run函数返回类型,是根据匿名函数最后一行的变化而变化 (此条==let)

2.run函数的匿名函数里持有的this == str本身 (此条和apply一样)

with :

1.with 函数返回类型,是根据匿名函数最后一行的变化而变化 (此条==let)

2.with 函数的匿名函数里持有的this == str本身 (此条和apply一样)

 

1.with 函数


首先先从with函数开始,with函数接受两个参数,第一个参数可以是一个任意类型的对象,第二个参数是一个Lambda表达式。with函数会在Lambda表达式中提供第一个参数对象的上下文,并且使用Lambda表达式中的最后一行代码作为返回值进行返回,代码如下:

val with = with(obj) {
//这里是 obj 的上下文
"value" //with 函数的返回值
}

那么这个函数有什么用? 它可以在连续操作同一个对象的多个方法时让代码变得精简,下面描述一个具体的例子:

var name1:String  = "wanglongjiang"
普通操作
name1.replace('g', 'p')
name1.replace('a','b')
println(name1)
使用with表达式
val withtest = with(name1){
            replace('g', 'p')
            replace('a','b')
            “println(this)”
}

 

2.run函数


run函数的用法和使用场景和上面with类似,只是稍微做了一些语法的改动。首先run函数通常不会直接调用,而是要在某个对象的基础上调用;其实run函数只接受一个Lambda参数,并且在Lambda表达式中提供调用对象的上下文。其它方面和with一样,包括也会使用Lambda表达式中的最后一行代码作为返回值返回。示例如下:

val result = obj.run {
            //这里是obj的上下文
            "value" //run函数的返回值
        }
val runtest = name1.run {
            replace('g', 'p')
            replace('a','b')
            "runtest"
        }
        println(runtest)


3.apply函数


apply函数和run函数也是及其类似,都是要在某个对象上调用,并且只接受一个Lambda参数,也会在Lambda表达式中提供对象的上下文,但是apply函数无法定义返回值,而是会自动返回调用对象本身,示例代码如下:

 

val result = obj.apply {
            //这里是obj的上下文
        }
        //result == obj
val applytest = name1.apply {
            replace('g', 'p')
            replace('a','b')
            "runtest"  无效
        }
        println(applytest) 返回对象本身


4.let 函数


1.let函数返回类型,是根据匿名函数最后一行的变化而变化

2.let函数的匿名函数里持有的是it == 集合本身

val lettest = name1.let {
            it.replace('g', 'p')
            it.replace('a','b')
            "runtest"
        }
        println(lettest)
目录
相关文章
|
3天前
|
Kotlin
Kotlin中的函数分类(顶层、成员、局部、递归等)
Kotlin中的函数分类(顶层、成员、局部、递归等)
7 1
|
3天前
|
Kotlin
Kotlin中的函数定义
Kotlin中的函数定义
10 4
|
2天前
|
Java Kotlin
Kotlin 中的 apply 函数详解
Kotlin 中的 apply 函数详解
4 0
|
2天前
|
设计模式 Java Kotlin
Kotlin 中的 run 函数详解
Kotlin 中的 run 函数详解
5 0
|
2天前
|
Java Kotlin
Kotlin 中的 with 函数简介
Kotlin 中的 with 函数简介
3 0
|
2天前
|
安全 Kotlin
Kotlin中的安全导航操作符?.、空合并运算符?:以及let函数的实践与理解
Kotlin中的安全导航操作符?.、空合并运算符?:以及let函数的实践与理解
3 0
|
29天前
|
安全 Java Android开发
使用Kotlin进行Android应用开发:高效、简洁与乐趣并存
【6月更文挑战第1天】Kotlin,JetBrains开发的静态类型语言,正日益成为Android开发首选。它与Java兼容,提供简洁、安全的语法,如空安全、扩展函数和Lambda表达式,提升开发效率和代码可读性。Kotlin在Android开发中的优势包括提高开发速度、降低学习曲线及强大的社区支持。实践中,数据类简化对象创建,扩展函数增强SDK,Lambda表达式简化回调处理,协程优化异步操作。掌握Kotlin对Android开发者极具价值。
|
2月前
|
存储 安全 Android开发
构建高效的Android应用:Kotlin与Jetpack的结合
【5月更文挑战第31天】 在移动开发的世界中,Android 平台因其开放性和广泛的用户基础而备受开发者青睐。随着技术的进步和用户需求的不断升级,开发一个高效、流畅且易于维护的 Android 应用变得愈发重要。本文将探讨如何通过结合现代编程语言 Kotlin 和 Android Jetpack 组件来提升 Android 应用的性能和可维护性。我们将深入分析 Kotlin 语言的优势,探索 Jetpack 组件的核心功能,并通过实例演示如何在实际项目中应用这些技术。
|
12天前
|
安全 Java 编译器
Android面试题之Java 泛型和Kotlin泛型
**Java泛型是JDK5引入的特性,用于编译时类型检查和安全。泛型擦除会在运行时移除类型参数,用Object或边界类型替换。这导致几个限制:不能直接创建泛型实例,不能使用instanceof,泛型数组与协变冲突,以及在静态上下文中的限制。通配符如<?>用于增强灵活性,<? extends T>只读,<? super T>只写。面试题涉及泛型原理和擦除机制。
18 3
Android面试题之Java 泛型和Kotlin泛型
|
2天前
|
安全 Android开发 Kotlin
Android面试题之Kotlin协程并发问题和互斥锁
Kotlin的协程提供轻量级并发解决方案,如`kotlinx.coroutines`库。`Mutex`用于同步,确保单个协程访问共享资源。示例展示了`withLock()`、`lock()`、`unlock()`和`tryLock()`的用法,这些方法帮助在协程中实现线程安全,防止数据竞争。
8 1