Android开发学习之路--Kotlin之常用表达式及函数
Posted 东月之神
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发学习之路--Kotlin之常用表达式及函数相关的知识,希望对你有一定的参考价值。
中缀表达式
只有一个参数,用infix修饰的函数
infix fun shouldBe(name:String)
this shouldBe "666"
if 表达式
看一个max函数,这里的if是有返回值的,也就是a>=b返回a,否则返回b
fun max(a:Int, b: Int) = if(a >= b) a else b
when 表达式
判断类型直接返回对应的结果
fun type(obj: Any) = when (obj)
is Long -> "I am Long"
is String -> "I am String"
else -> "I am unknow"
apply
调用某对象的apply函数,在函数块内可以通过this指代该对象。返回值为该对象自己。
- 函数定义:
fun T.apply(block: T.() -> Unit): T block(); return this
- 示例:
class Data(var name: String = "", var phone: String = "")
var applyTest = Data().apply
this.name = "eastmoon"
phone = "10086"
在apply块中,可以直接赋值,当然也可以省略this,最后返回对象自己.适用于run函数的任何场景,一般用于初始化一个对象实例的时候,操作对象属性,并最终返回这个对象
let
调用某对象的let函数,则该对象为函数的参数。在函数块内可以通过it指代该对象。返回值为函数块的最后一行或指定return表达式。
- 函数定义:
fun T.let(block: (T) -> R): R = block(this)
- 示例:
val letTest: Data? = Data()
letTest?.let
it.name = "huaixi"
it.phone = "12580"
true
?: let
toast("letTest is null")
false
在let块中,可以直接赋值,不可以省略it,最后返回true.适用于处理不为null的操作场景
with
with函数和前面的几个函数使用方式略有不同,因为它不是以扩展的形式存在的。它是将某对象作为函数的参数,在函数块内可以通过this指代该对象。返回值为函数块的最后一行或指定return表达式。
- 函数定义:
fun with(receiver: T, block: T.() -> R): R = receiver.block()
- 示例:
val withTest = Data()
with(withTest)
name = "huaixi"
this.phone = "12580"
true
在with块中,可以直接赋值,当然也可以省略this,最后返回true.适用于调用同一个类的多个方法时,可以省去类名重复.
run
调用run函数块。返回值为函数块最后一行,或者指定return表达式。
- 函数定义:
fun T.run(block: T.() -> R): R = block()
- 示例:
val runTest = Data()
runTest.run
this.name = "huaixi"
phone = "12580"
true
在run块中,可以直接赋值,当然也可以省略this,最后返回true.适用于let,with函数任何场景。
also
调用某对象的also函数,则该对象为函数的参数。在函数块内可以通过 it 指代该对象。返回值为该对象自己。
- 函数定义:
fun T.also(block: (T) -> Unit): T block(this); return this
- 示例:
val alsoTest = Data().also
it.name = "huaixi"
it.phone = "12580"
在also块中,可以直接赋值,不可以省略it,最后返回对象自己. 适用于let函数的任何场景,一般可用于多个扩展函数链式调用
以上是关于Android开发学习之路--Kotlin之常用表达式及函数的主要内容,如果未能解决你的问题,请参考以下文章