当前位置: 首页 > 编程笔记 >

Kotlin中内置函数的用法和区别总结

万俟旭
2023-03-14
本文向大家介绍Kotlin中内置函数的用法和区别总结,包括了Kotlin中内置函数的用法和区别总结的使用技巧和注意事项,需要的朋友参考一下

前言

在Kotlin中的源码标准库(Standard.kt)中提供了一些Kotlin扩展的内置函数可以优化kotlin的编码。Standard.kt是Kotlin库的一部分,它定义了一些基本函数。 这个源代码文件虽然一共不到50行代码,但是这些函数功能都非常强大。

本文主要记录kotlin中let、apply、run、also、with等函数的用法和区别,下面话不多说了,来一起看看详细的介绍吧

0. let

val a = "hello,kotlin".let{
 println(it)
 3
}

println(a)

hello,kotlin
3

定义:

public inline fun <T, R> T.let(block: (T) -> R): R = block(this)

解释:调用 “hello,kotlin”的let函数,it在作用域中替代该对象(hello,kotlin),默认返回函数最后一行

1. apply

val a = "hello,kotlin".apply{
 println(this)
}

println(a) 

hello,kotlin
hello,kotlin

定义:

public inline fun <T> T.apply(block: T.() -> Unit): T { block(); return this }

解释:函数内可以用this替代调用apply函数的对象,返回值为该对象自己。

2. run

val a = "hello,kotlin".run{
 println(this)
 2
}

println(a) 

hello,kotlin
2

定义:

public inline fun <T, R> T.run(block: T.() -> R): R {
 return block()
}

解释:根据上述执行代码,run函数返回闭包内最后一行。

3. also

val a = "hello,kotlin".also{
 println(it)
}

println(a) 

hello,kotlin
hello,kotlin 

定义:

public inline fun <T> T.also(block: (T) -> Unit): T {
 block(this)
 return this
}

解释:从源码的定义可以看出,also执行block(闭包),并返回this,即调用also函数的对象。

4. with

val a = with("string") {
 println(this)
 3
}
println(a)

string
3

定义:

public inline fun <T, R> with(receiver: T, block: T.() -> R): R = receiver.block()

解释:并不是扩展函数,将指定对象作为函数的参数,在作用域内this替代该对象,返回值为该对象的最后一行。指定的T作为闭包的receiver,使用参数中闭包的返回结果。

以上,注意阅读Kotlin相关高阶函数的源码时候,如果函数中最后一个参数为闭包,那么最后一个参可以不写在括号中,而写在括号后面,如果只有一个参数,括号也可以去掉。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。

 类似资料:
  • 本文向大家介绍python函数与方法的区别总结,包括了python函数与方法的区别总结的使用技巧和注意事项,需要的朋友参考一下 (1)函数的分类: 内置函数:python内嵌的一些函数。 匿名函数:一行代码实现一个函数功能。 递归函数 自定义函数:根据自己的需求,来进行定义函数。 (2)方法的分类: 普通方法:直接用self调用的方法。 私有方法:__函数名,只能在类中被调用的方法。 属性方法:@

  • 我在Spock测试中使用内部kotlin函数时遇到了麻烦。以下是我的spock测试的简短片段: 我的测试以StackTrace失败: groovy.lang.missingmethodException:方法:touk.recruitment.parkandrest.parkingmanagement.core.monetary.monetarypreconditions.checkmonetar

  • 我已经开始学习科特林了。我想知道 块和之间的区别。这与我们如何使用它来改进有什么区别?

  • 问题内容: 我知道,,,,,和其他一些人都没有的功能,但语言结构。 这些语言构造中的一些需要括号,而其他则不需要。 有些具有返回值,有些则没有。 那么语言构造和内置函数之间的 内部 区别是什么? 问题答案: (这比我打算的要长;请耐心等待。) 大多数语言由一种称为“语法”的东西组成:该语言由几个定义明确的关键字组成,并且您可以用该语言构造的完整表达范围都是由该语法建立的。 例如,假设您有一个简单的

  • 本文向大家介绍JavaScript中的匿名函数和内联函数有什么区别?,包括了JavaScript中的匿名函数和内联函数有什么区别?的使用技巧和注意事项,需要的朋友参考一下 匿名函数 顾名思义,匿名允许创建没有任何名称标识符的函数。它可以用作其他函数的参数。这就是可以使用JavaScript匿名函数的方式- 另一个示例可以如下- 内联函数 一个内联 函数是一个javascript函数,其被分配给在运

  • 本文向大家介绍Python中内置数据类型list,tuple,dict,set的区别和用法,包括了Python中内置数据类型list,tuple,dict,set的区别和用法的使用技巧和注意事项,需要的朋友参考一下 Python语言简洁明了,可以用较少的代码实现同样的功能。这其中Python的四个内置数据类型功不可没,他们即是list, tuple, dict, set。这里对他们进行一个简明的总