操作符

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. Xamarin Andro教程搭建Xamarin Androidid开发环境(一)
  2. php 单词替换,如何在PHP中替换字符串中的单词?
  3. java基础(参数传递)
  4. linux GPIO驱动详解
  5. crud-table_我个人的CRUD故事-或我如何来到CUBA平台
  6. FPGA阻塞赋值与非阻塞赋值用法
  7. ES6——Set和WeakSet
  8. HDU1847 Good Luck in CET-4 Everybody!【SG函数】
  9. python无限弹窗1.0
  10. 免疫算法(Immune Algorithm)详解
  11. 适应浏览器自带断点下载
  12. USB TYPE A B C 引脚定义
  13. python 获取 汉字 %开头的 gb2312 编码
  14. mysql的my.cnf常用配置
  15. Simulink仿真入门到精通(十七) Simulink代码生成技术详解
  16. 如何组建游戏制作团队?团队人员如何寻找?
  17. MongoDB误操作恢复测试
  18. 如果你还没冒犯过别人,说明你可能还没做过一件重要的事
  19. java编译找不到文件_java报错找不到文件解决方法
  20. 万能的APT!编译时注解的妙用

热门文章

  1. FlowDroid架构剖析
  2. ECharts关系图(详细示例——满满的注释)
  3. Ubuntu18.04.1安装Docker CE 18.09.5
  4. 手把手教你建站,建站其实很简单!
  5. vue官方脚手架(vue-cli)配置多页面应用(多页面网站)
  6. 【.NET Core项目实战-统一认证平台】开篇及目录索引
  7. centos安装rpmforge
  8. adb查看logcat日志
  9. TensorFlow加载数据的方式
  10. 基本算法练习_日期倒计时