Android

【学习】Kotlin 复习笔记

2021-05-18  本文已影响0人  Merbng

基础

val (name,price)=Book("Kotlin入门",66.6f)
println(name)
println(price)
------------------------------------------
Kotlin类需要声明`operator fun componentN()`方法来实现解构功能。
否则是不具备解构声明的功能的,例如:
class Book(var name:String,var price:Float){
    operator fun component1():String{//解构第一个变量
        return name
    }
    operator fun component2():Float{//解构第二个变量
        return price
    }
}
中缀函数的要求:
- 1. 成员函数活扩展函数
- 2. 函数只有一个参数
- 3. 不能使用可变参数或默认参数
举例:
infix fun String.吃(fruit:String):String{
    return "${this}吃${fruit}"
}
调用:“小名”吃 "苹果"

类型系统

val b:Byte =1 // OK,字面值是静态检测的
val i:Int =b //错误
val i:Int = b.toInt()//ok

面向对象

final: 不允许继承或重写
open:允许继承或重写
abstract:抽象类/抽象方法

public:所以地方可见
internal:模块中可见,一个模块就是一组编译的Kotlin文件
protected:子类中可见(与Java不同,相同包不可见)
private:类中可见

lambda表达式

class Ref<T>(var value:T)
在这个函数里,我们传入了一个List,企图从中过滤出T类型的元素
Java:
<T>List<T>filter(List list){
    List<T> result =new ArrayList<>();
    for(Object e:list){
        if(e instanceof T){//compiler error
            result.add(e);
        }
        return result;
    }
}
---------------------------------
Kotlin:
fun <T> filter(list:List<*>):List<T>{
    val result =ArrayList<T>()
    for(e in list){
        if(e is T){//cannot check for instance of erased type:T
            result.add(e)
        }
    }
    return result
}
调用:
val list =listOf("",1,false)
val strList = filter<String>(list)
-----------------------------------------
内联后:
val result =ArrayList<String>()
for(e in list){
    if(e is String){
        result.add(e)
    }
}

协程

本文来自彭旭锐
查看原文

上一篇 下一篇

猜你喜欢

热点阅读