kotlin
小小灰烬
在学习上我就是个小学生
展开
-
高阶函数
kotlin-stdlib-common 包下高阶函数:接收另一个函数(函数类型)作为参数,或返回值的类型是另一个函数。2.1 map:将List中每个元素转换成新的元素,并添加到一个新的List中,最后将新List返回arrayOf(1, 2, 3).map { i: Int -> i * 10 }.forEach(::println)/** * 打印输出 * 10 * 20 * 30 */2.2 flatMapflatMap:将数组中全部元素按顺序组成一个list//原创 2021-03-23 10:31:02 · 125 阅读 · 0 评论 -
Kotlin:内置函数let、also、with、run、apply
1.4.1 let 防空 // 作用1:使用it替代object对象去访问其公有的属性 & 方法 object.let{ it.todo() } // 作用2:判断object为null的操作 object?.let{//表示object不为null的条件下,才会去执行let函数体 it.todo() } // 注:返回值 = 最后一行 / return的表达式1.4.2 also.原创 2021-03-23 10:30:27 · 241 阅读 · 0 评论 -
Kotlin-内联inline、noinline、reified、crossinline
1.3.1 inline 函数在运行时都会生成一个对象,很多的小函数意味着额外的开销,使用内联函数则会在编译时进行优化。[编译会在调用方生成代码] inline fun <T> lock(lock: Lock, body: () -> T): T {...} 1.3.2 noinline 如果希望只内联一部分传给内联函数的 lambda 表达式参数,那么可以用 noinline 修饰符标记不希望内联的函数参数 [inline只能编译一层 不能原创 2021-03-23 10:29:32 · 258 阅读 · 0 评论 -
基于Lambda的DSL
class TreeNode(val name: String? = null) {//构造函数private val children = mutableListOf<TreeNode>()//可变列表fun node(name: String? = null, initialize: (TreeNode.() -> Unit)? = null) {//一个参数为String,一个参数为lambda,均由默认值 val child = TreeNode(name)原创 2021-03-23 10:28:39 · 267 阅读 · 0 评论 -
homebrew失效 Error: homebrew-core is a shallow clone. To `brew update` first run: git -C “/usr/local
如图可以看到 /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core1.删除后重新下载cd /usr/local/Homebrew/Library/Taps/homebrewrm -rf homebrew-corebrew upgrade2.如果还是失败git clone git://mirrors.ustc.edu.cn/homebrew-core.git//usr/local/Homebrew/Library/Taps/homebr.原创 2021-03-16 14:03:23 · 3926 阅读 · 3 评论 -
kotlin 类对象函数接口基础
6.类对象函数接口 kotlin都有超类Any,提供equals()、toString()、hsshCode()6.1 继承 Kotlin 中所有的类都有共同的父类 Any [java object] 类的get/set get() = this.toString() set(value) { field = value } class Example // 隐式继承于 Any class原创 2021-03-12 16:51:22 · 199 阅读 · 2 评论 -
kotlin open
理论:kotlin都有超类Any,提供equals() 、toString()、hsshCode()默认类中所有的方法也是默认是final的,不能被继承,实现基类继承父类 重写…//open 继承 , override重写覆盖同名方法需要openopen class Animal(food : String ){ open fun eat(food: String) { }} class Dogl(food : String ) : Animall(food : Str原创 2021-03-07 21:56:50 · 436 阅读 · 0 评论 -
Kotlin 添加到现有应用
1.创建项目添加grdle配置build.gradle // Project build.gradle file. buildscript { ext.kotlin_version = '1.4.10' ... dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } // Inside each module usin原创 2021-03-05 16:18:37 · 112 阅读 · 0 评论 -
Kotlin 基础语法
文档:https://developer.android.google.cn/kotlin/learn#higher-order1.基础基本数据类型Byte、Short、Int、Long、Float、Double* val 用于值从不更改的变量。使用 val 声明的变量无法重新赋值。如希望值始终不变* var 用于值可以更改的变量。* count 常量 例如:var count: Int = 10 类型推断: 例如:var count = 10 判断 i原创 2021-03-05 14:15:59 · 69 阅读 · 0 评论