网站建设报价比较,凡科建设网站如何,wordpress顶部工具栏修改logo,有flash的网站摘要说明
函数标准库常用的有#xff1a; 1、apply#xff1a; apply函数作为一个配置函数#xff0c;可以传入一个接收者#xff0c;然后调用一系列函数来配置它以方便使用#xff0c;如果提供lambda给apply函数执行#xff0c;它会返回配置好的接收者 使用介绍#x…摘要说明
函数标准库常用的有 1、apply apply函数作为一个配置函数可以传入一个接收者然后调用一系列函数来配置它以方便使用如果提供lambda给apply函数执行它会返回配置好的接收者 使用介绍 // 使用apply实现val file1 File(E://text_demo.txt).apply {setReadable(true)setWritable(true)setExecutable(false)}2、let 能使某个变量作用于其lambda表达式里让it关键字能引用。let和apply比较let会把接收者传给lambda而apply什么都不传匿名执行完函数apply会返回当前接收者而let会返回lambda最后一行。 使用介绍 /*** let使用*/val result listOfInt(3, 2, 1).first().let {it * it}输出结果9
-----------------------------------------------------------
fun formatGreeting(guestName: String?): String {return guestName?.let {Welcome, $it} ?: whats your name?
}formatGreeting(null)
输出结果whats your name?----------------------------------------------------------
说明安全调用允许在可空类型上调用函数
var str: String butterflystr str.let {if (it.isNotBlank()) {it.capitalize().plus(你好)} else {butterfly}}println(str)输出结果Butterfly你好3、run 1光看作用域行为run和apply差不多但与apply不同run函数不返回接收者run返回的是lambda结果也就是true或者false。2执行函数引用 使用介绍 /*** run函数的使用*/// 使用方式1val file2 File(E://text_demo.txt)val result2 file2.run {readText().contains(great)}println(result2)输出结果true
---------------------------------------------------------------
// 使用方式2调用函数val isLong The peoples Republic of China.run(::isLong)fun isLong(name: String) {name.length 10
}println(isLong)输出结果true4、with 是run的变体他们的功能行为是一样的但with调用方式不同调用with时需要值参作为其第一个参数传入 使用介绍 val resultWith with(The peoples Republic of China) {length 10}println(resultWith)输出结果true5、also 和let函数功能相似。和let一样also也是把接受者作为参数值传给lambda但是有一点不同also返回接收者对象而let返回lambda结果因为这个差异also尤其适合针对同一原始对象处理事务既然also返回的是接收者对象你就可以基于原始接收者对象执行额外的链式调用。 使用介绍 /*** also函数使用*/var fileContents: ListStringFile(E://text_demo.txt).also {println(it.name)}.also {fileContents it.readLines()}println(fileContents)
---------------------------------------------------------------------------------- 输出结果text_demo.txt[I am happy to join with you today in what will go down in history as the greatest6、takeIf takeif函数需要判断lambda中提供的条件表达式给出true或false结果如果判断结果是true从takeIf函数返回接收者对象如果是false则返回null。如果需要判断某个条件是否满足再决定是否可以赋值变量或执行某项任务takeif就非常有用takeif函数类似于if语句但它的优势是可以直接在对象实例上调佣避免了临时变量赋值的麻烦 使用介绍 // 如果条件返回false则文件返回nullval readText File(E://text_demo.txt).takeIf { it.exists() it.canRead() }?.readText()println(readText)输出结果文档内容7、takeUnless
takeif的函数辅助类takeUnless只有判断你给定的条件 结果是false时takeUnless(除非)才会返回原始接收者对象
使用介绍
// 核心takeUnless 是反向操作val readText File(E://text_demo.txt).takeUnless { it.isHidden }?.readText()println(readText)输出结果文档内容