操作符

Elvis 操作符 ?:

val a = b?.length ?: -1

安全转换 as?

  • 转型不成功返回 null

null safety

var a : String? = null
a?.length //a 为null 则pass,不为null 则调用
a!!.length// 抛异常

类型判断符 is

范围操作符 : in

for(i in 1..5 step 1){}
for (i in 5 downTo 1 step 2){}

多行输入符 “”“

  • 三个双引号之间的内容将被原样保留

扩展函数


run

  • 调用函数块,块内 this指代调用对象
  • 返回值为最后一行
val result = "haha".run{println(this)"I'm result"
}
println(result)

apply

  • 同run,函数块内this 指代该对象
  • 返回值为对象自己

let

  • 函数块内 it 指代该对象
  • 返回值最后一行

also

  • 函数块内it 指代该对象
  • 返回值为对象自己

with

  • 将该对象作为函数参数
  • this 指代该对象
  • 返回值为最后一行
val result = with("haha"){println(this)"result"
}
println(result)

修饰符

  • private 只能被自己所在的文件可见,不能在定义这个类之外的文件中使用
  • protected 可以被成员自己和继承它的成员可见(比如,类和它的子类)
  • internal 对所在的整个module可见
  • public 最没有限制的修饰符。这是默认的修饰符

委托属性

  • 一个属性具有一些相同的行为,使用lazy或者observable可以被很有趣地实现重用。而不是一次又一次地去声明那些相同的代码
  • https://wangjiegulu.gitbooks.io/kotlin-for-android-developers-zh/content/biao_zhun_wei_tuo.html
  • 标准委托

    by lazy
    by observable
    by Delegates.notNull()
    by map
    
  • 自定义委托 :

        继承ReadWriteProperty
    by DelegatesExt.notNullSingleValue()
    
  • 操作符
  • 密封类 sealed

    • 类似枚举,不同之处在于枚举的实例是唯一的,而密封类可以有很多实例,它们可以有不同的状态。

      sealed class Option<out T> {class Some<out T> : Option<T>()object None : Option<Nothing>()
      }
      

参考:
- https://wangjiegulu.gitbooks.io/kotlin-for-android-developers-zh/content/biao_zhun_wei_tuo.html

记录一些kotlin的用法相关推荐

  1. Kotlin contract 用法及原理

    什么是 contract contract(契约)是一种 Kotlin 面向编译器约定的一种规则,它帮助编译器更加智能地识别某些需要特定的代码条件,为代码创建更加友好的上下文关联环境. Kotlin ...

  2. 【错误记录】Kotlin 编译报错 ( Not nullable value required to call an ‘iterator()‘ method on for-loop range )

    文章目录 一.报错信息 二.解决方案 一.报错信息 Google Play 上架要求 Android 的编译版本 和 目标版本都要高于 30 才可以上传 ; 将 Android 的编译版本 和 目标版 ...

  3. 【错误记录】Kotlin 编译报错 ( Smart cast to ‘Xxx‘ is impossible, because ‘xxx‘ is a mutable property ... )

    文章目录 一.报错信息 二.解决方案 一.报错信息 Google Play 上架要求 Android 的编译版本 和 目标版本都要高于 30 才可以上传 ; 将 Android 的编译版本 和 目标版 ...

  4. 【错误记录】Kotlin 编译报错 ( Class ‘Xxx‘ is not abstract and does not implement abstract member )

    文章目录 一.报错信息 二.解决方案 一.报错信息 Google Play 上架要求 Android 的编译版本 和 目标版本都要高于 30 才可以上传 ; 将 Android 的编译版本 和 目标版 ...

  5. 【错误记录】Kotlin 编译报错 ( Type mismatch: inferred type is String? but String was expected )

    文章目录 一.报错信息 二.解决方案 一.报错信息 Google Play 上架要求 Android 的编译版本 和 目标版本都要高于 30 才可以上传 ; 将 Android 的编译版本 和 目标版 ...

  6. 【错误记录】Kotlin 1.5.0 编译报错 ( 1.5.0 中 Float 不能直接转 Byte 类型 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 Kotlin 1.5.01.5.01.5.0 后语法与之前不同 , Float 类型不能直接转为 Byte 类型 , 需要先转为 Int , 然后转 ...

  7. 记录一个ansible高级用法与shell结合

    未经本人同意不得转载 目录 一.ansible安装(ansible的配置与roles运用) 1.ansible的概述 2.安装python 3.ansible运用前准备 二.修改roles 1.初步修 ...

  8. 【错误记录】Kotlin 编译报错 ( Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable ... )

    文章目录 一.报错信息 二.解决方案 一.报错信息 Google Play 上架要求 Android 的编译版本 和 目标版本都要高于 30 才可以上传 ; 将 Android 的编译版本 和 目标版 ...

  9. Android kotlin定时器用法及说明

    kotlin定时器 java.util.Timer 定时器 schedule(TimerTask task, long delay) 延迟delay毫秒后,执行一次task schedule(Time ...

最新文章

  1. python不断刷新网页_python多线程不断刷新网页的代码
  2. IT界惊现文豪!华为领导及阿里P10遭吐槽
  3. Keepalived双主模型中vrrp_script中权重改变故障排查
  4. CSS3背景线性渐变
  5. 记一次与为知笔记的客服沟通
  6. 定时器Timer和Ticker
  7. Java I/O流InputStream,OutputStream,Reader,Writer
  8. ASP.NET 2.0主题和皮肤实现网站美化
  9. 使用mysql制作学生成绩单_【实例讲解】快速制作学生成绩单
  10. windows下sublime通过sftp扩展上传文件到linux服务器上
  11. 支付宝发布“城市生活周”电影票预售成绩单:预售票房已涨20倍
  12. linux SHELL下替代sed、ask的常用字符串处理(截取,判断、替换)
  13. 高分屏更改Adobe Premier CC UI界面字体大小
  14. 画图软件origin-柱状图断点设置
  15. AppleScript+JavaScript自动认证校园网
  16. 第四周-C语言 圆柱体表面积计算
  17. 【Python表白小程序】七夕表白神器(赶紧收藏起来)
  18. 7 款优秀 Markdown 编辑工具推荐
  19. 【漆学军】分享一个自定义K线的指标的源码
  20. XP系统的机械硬盘无法读取,Ntoskrnl.exe损坏硬盘锁定还是坏道?

热门文章

  1. “私人定制”——开启定制家具2.0时代
  2. 2.1_11 Oralce 执行计划之3_直方图(Histograms)
  3. Pulsar的Topic、Subscription和Cursors工作原理
  4. 子网掩码,反掩码与通配符之间的区别
  5. 为什么大学计算机分数线高,杭州电子科技大学为什么比大学的录取分数线还高?...
  6. 东原地产:错配的野心与千亿黄粱梦
  7. 有道词典命令行查询工具(Mac/Ubuntu)
  8. 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?【LeetCode Hot 100】
  9. 企业微信体验 你的工作以后可能离不开它
  10. RPMForge安装