欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Kotlin中的思维模式

时间:2023-07-03
文章目录

Kotlin五种思维模式

概述函数思维表达式思维不变性思维 Kotlin五种思维模式 概述

学习Kotlin需要做五种思维转变,即:函数思维、表达式思维、不变性思维、空安全思维、协程思维。

函数思维

在Kotlin中,函数式一等公民。

函数可以独立于类之外;函数可以作为参数和返回值;函数可以像变量一样,即函数引用。

fun foo() = listOf(1, 2, 3, 4).filter { it % 2 == 0 }

表达式思维

表达式,是一段可以产生值得代码;语句,是一句不产生值的代码。

Kotlin的类型系统让大部分语句都变成了表达式,同时也让无返回值的函数有了类型。

//when表达式fun foo(data: Any?): Int { val i = when (data) { is Number -> data.toInt() is String -> data.length else -> 0 } return i}

//函数表达式val f: (String) -> Unit = ::printlnf("hello world")

不变性思维

Kotlin将不变性的思维发挥到极致,开发者需要定义一个变量时,需要明确指明这个变量是可变的(var),还是不可边的(val)。在定义集合时,需要指明这个集合是可变的(MutableList),还是不可变的(List)。

尽可能使用条件表达式消灭var。由于Kotlin当中大部分语句都是表达式,可以借助这种思路减少var变量的定义。使用数据类存储数据,消灭数据类的可变性。充分发挥Kotlin数据类的优势,借助copy方法,实现不变性。尽可能对外暴露只读集合。根据开闭原则,尽可能对修改封闭。只读集合底层不一定是不可变的,警惕Java代码中的只读集合访问行为。val并不意味着绝对的不可变。

//消灭var,推荐使用valval i = when (data) { is Number -> data.toInt() is String -> data.length else -> 0}

//推荐用数据类存储数据,消灭可变性data class Person(val name: String?, val age: Int?)fun changeName(person: Person, newName: String): Person = person.copy(name = newName)fun changeAge(person: Person, newAge: Int): Person = person.copy(age = newAge)

//尽可能对外暴露只读集合class Model { private val _data: MutableList = mutableListOf() val data: List get() = _data.toList() fun add() { _data.add("A") }}

//通过自定义get()方法,打破了val的不变性object Model { val data get() = Random.nextInt()}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。