《第一行代码》第三版学习笔记(三)
kotlin标准函数
with函数 的两个参数
第一个参数可以是任意类型对象
第二个参数是一个lambda表达式,with函数会在lambda表达式中提供第一个参数对象的上下文,并使用lambda表达式中的最后一行代码作为返回值返回。
作用:在连续调用同一个对象的多个方法时让代码变得更加精简
val list = listOf("Apple","Banana","Orange","Pear","Grape")
// 可变的字符序列
val result = with(StringBuilder()) {
append("开始吃水果\n")
for(fruit in list) {
append(fruit).append("\n")
}
append("吃完水果")
toString()
}
println(result)
run函数
run函数的用法和使用场景和with函数类似
run函数通常不会直接调用,而是要是在某个对象的基础上调用;run函数只接受lambda参数,在lambda表达式中提供调用对象的上下文,其他和with函数一样。
val list = listOf("Apple","Banana","Orange","Pear","Grape")
// 可变的字符序列
val result = StringBuilder().run {
append("开始吃水果\n")
for(fruit in list) {
append(fruit).append("\n")
}
append("吃完水果")
toString()
}
println(result)
apply函数
apply函数又和run函数很像,不一样的是apply函数无法指定返回值,而是自动返回调用对象本身。
val list = listOf("Apple","Banana","Orange","Pear","Grape")
// 可变的字符序列
val result = StringBuilder().apply {
append("开始吃水果\n")
for(fruit in list) {
append(fruit).append("\n")
}
append("吃完水果")
}
println(result.toString())
定义静态方法
1.静态方法:
不需要创建实例就能调用的方法,在有些编程语言里面静态方法也叫类方法。
适合编写工具类的功能,因为工具类通常没有创建实例的必要,基本全局通用。
2.类似于静态方法的调用方式:
kotlin更常用单例类,而不是静态方法。但是单例类会让整个类里的方法都编程类似于静态方法的调用方式。
在普通类里面对想要对其静态调用的方法外面来一层companion object。
class Util {
//需创建实例才能调用
fun doAction1(){
println("do action1")
}
//可直接Util.doAction2()调用
companion object {
fun doAction2(){
println("do action2")
}
}
}
companion object实际上会在类的内部创建一个伴生类,doAction2()就是定义在这个伴生类里面的实例方法。
3.真正的静态方法:
如果定义货真价实的静态方法在kotlin中有两种方法:注解和顶层方法。
@JvmStatic注解:只能加在 单例类 或 companion object的方法 上
顶层方法:定义在任何类中的方法,比如main()方法。kotlin编译器会将所有的顶层方法全部编译成静态方法。
例如定义一个顶层方法
fun doSomething(){
println("do something")
}
任何位置都可以被调用,直接输入函数名就可以。但在java中这个方法需要以 文件名.方法 这样的写法来调用它。