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之常用表达式及函数的主要内容,如果未能解决你的问题,请参考以下文章

Android开发学习之路--Kotlin之Android开发使用心得和注意事项

Android开发学习之路--性能优化之常用工具

Android开发学习之路--Kotlin之类及对象

Android开发学习之路--UI之基本布局

Android开发学习之路--网络编程之xmljson

Android开发学习之路--UI之ListView