电商网站推广方法,服装品牌策划及营销推广方案,制作网站多少钱一个,焦作网站开发一、let 扩展函数 Kotlin标准库函数let可用于范围确定和空检查。当调用对象时#xff0c;let执行给定的代码块并返回其最后一个表达式的结果。对象可以通过引用(默认情况下)或自定义名称在块中访问。 let扩展函数源码 let.kt文件代码 fun main() {println(isEmpty $is…一、let 扩展函数 Kotlin标准库函数let可用于范围确定和空检查。当调用对象时let执行给定的代码块并返回其最后一个表达式的结果。对象可以通过引用(默认情况下)或自定义名称在块中访问。 let扩展函数源码 let.kt文件代码 fun main() {println(isEmpty $isEmpty)printNonNull(null)printNonNull(my string)printIfBothNonNull(First,Second)//下面是运行结果//test//isEmpty false//Printing null://Printing my string:// my string////First : Second}val isEmpty test.let {println(it) // 2it.isEmpty()
}fun printNonNull(str:String?){println(Printing \$str\:)str?.let {print(\t)println(it)println()}
}fun printIfBothNonNull(strOne: String?, strTwo: String?) {strOne?.let { firstString -strTwo?.let { secondString -println($firstString : $secondString)println()}}
}运行结果 二、run 扩展函数 与let类似run是标准库中的另一个作用域函数。基本上它做同样的事情:执行一个代码块并返回其结果。 不同的是在内部运行对象是通过this访问的。当您想要调用对象的方法而不是将其作为参数传递时这是很有用的。 run扩展函数源码 run.kt文件代码
fun getNullableLength(ns: String?) {println(for \$ns\:)val resutl ns?.run {println(\tis empty? isEmpty())println(\tlength $length)length}//返回最后一行println(resutl $resutl)
}fun main(){getNullableLength(null)getNullableLength()getNullableLength(some string with Kotlin)//下面是运行结果//for null://resutl null//for :// is empty? true// length 0//resutl 0//for some string with Kotlin:// is empty? false// length 23//resutl 23}运行结果 三、with函数 With是一个非扩展函数可以简洁地访问其参数的成员:在引用其成员时可以省略实例名。 with函数源码 with.kt文件代码
fun main() {val personal Personal(test, 20)val withResult with(personal) {println(name $name)println(age $age)2122}println(withResult $withResult)//name test//age 20//withResult 22
}class Personal(var name: String, var age: Int)运行结果 四、apply扩展函数 apply在对象上执行代码块并返回对象本身。在块内部对象被this引用。这个函数对于初始化对象很方便。 在实际项目用来显示列表数据的RecyclerView.Adapter里onBindViewHolder方法里使用apply或with函数较多 apply扩展函数源码 apply.kt文件代码
fun main() {val jake Person()val stringDescription jake.apply {name Jakeage 30about Android developer}.toString()println(stringDescription $stringDescription)//stringDescription Person(nameJake, age30, aboutAndroid developer)}class Person() {var name: String? nullvar age: Int 20var about: String? nulloverride fun toString(): String {return Person(name$name, age$age, about$about)}
}运行结果 五、also扩展函数 它也像apply一样工作:它执行一个给定的块并返回被调用的对象。在块内部对象被它引用所以它更容易作为参数传递。这个函数可以方便地嵌入其他操作比如在调用链中登录。 also扩展函数源码 also.kt文件代码
fun main() {val jake Person2().also {println(it)}getPerson().also {it.token?.let { tempToen - login(tempToen) }}
}class Person2(var name: String test,var age: Int 0,var about: String? null
) {var token: String? nulloverride fun toString(): String {return Person(name$name, age$age, about$about)}
}fun login(toke: String) {}fun getPerson(): Person2 Person2()运行结果 推荐
Kotlin 协程的四种启动模式CoroutineStart