栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Kotlin中的思维模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kotlin中的思维模式

文章目录

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 = ::println
f("hello world")
不变性思维

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

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

//消灭var,推荐使用val
val 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()
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/732668.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号