Kotlin杂记之标准函数和静态方法

2023年1月27日09:58:56

前言

该博客是《第一行代码》第三版第3章关于Kotlin部分的笔记

Kotlin标准函数和静态方法

一、标准函数with、run和apply

(一)with

  1. with函数接收2个参数:第一个参数可以是任意的对象,第二个参数是一个Lambda表达式。
  2. with函数会在Lambda表达式中提供第一个对象的上下文,并使用Lambda表达式中的最后一行代码作为返回值返回。示例代码如下:
val result = with(obj) {
	// 这里是obj的上下文
	"value" //with函数的返回值
}
  1. with函数的作用:在连续调用同一个对象的多个方法时,with函数可以让代码变得更加精简,如:
val list = listOf("apple",  "banana",  "orange", "pear")
val result = with(StringBuilder()) {
	append("start eating fruits.\n")
	for(fruit in list) {
		append(fruit).append("\n")
	}
	append("Ate all fruits.")
	toString()
}
println(result)

(二)run

run函数的用法和使用场景其实和with函数是非常类似的,只是稍微做了一些语法改动而已。

  1. run函数不能直接调用,而是一定要调用某个对象的run函数才行
  2. run函数只接收一个Lambda参数,并且会在Lambda表达式中提供调用对象的上下文
  3. 其他方面和with函数一样

示例代码如下:

val result = obj.run {
	// 这里是obj的上下文
	"value" // run函数的返回值
}

(三)apply

apply函数和run函数极其类似,但apply函数无法指定返回值,而是会自动返回调用对象本身。

val result = obj.apply {
	// 这里是obj的上下文
}
// result == obj

二、定义静态方法

在kotlin中编写工具类,建议使用单例类

object Util {
	fun doAction() {}
}

在kotlin中想要定义静态方法,应该使用companion object

class Util {
	fun doAction1() {}
	companion object {
		fun doAction2() {}
	}
}

注意:companion object这个关键字实际上会在Util内部创建一个伴生类,而doAction2()方法就是定义在这个伴生类的实例方法。只是Kotlin会保证Util类始终只存在一个伴生类对象,因此调用Util.doAction2()方法实际上就是调用了Util类中伴生对象的doAction2()方法

@JvmStatic

如果我们给单例类或companion object中的方法加上@JvmStatic注解,那么Kotlin会将这些方法编译成真正的静态方法

顶层方法

顶层方法指的是那些没有定义在任何类中的方法,Kotlin编译器会将所有的顶层方法编译成静态方法。

  • 在Kotlin中,直接调用这个顶层方法即可
  • 在Java中,会生成一个“文件名Kt的类”,如,Helper.kt中有一个doSomething方法,可以调用HelperKt.doSomething()
  • 作者:U_yong
  • 原文链接:https://blog.csdn.net/qq_44756582/article/details/112962940
    更新时间:2023年1月27日09:58:56 ,共 1315 字。