Kotlin 笔记
来源:互联网 发布:mac文件存储位置 编辑:程序博客网 时间:2024/06/16 22:57
创建单例
data class Customer(val name: String, val email: String)
过滤 list[]
val positives = list.filter { x -> x > 0 }
或者
val positives = list.filter { it > 0 } //此处 it 是迭代器
list变换
例 : 有一个 User 的 list
var set :Set<User> = list.map( it.name).toSet() //此处 it 是迭代器
列表 排序
Collections.sort(datas,object:Comparator<ListGoods>{ override fun compare(o1: data?, o2: data?): Int { return o1?.salePrice - o2?.salePrice } })
简化成lambada
Collections.sort(datas) { o1, o2 -> o1?.salePrice - o2?.salePrice }
列表操作
val numbers = listOf(-1, 0, 2)val isZero: (Int) -> Boolean = { it == 0 }numbers.any(isZero) == truenumbers.all(isZero) == falsenumbers.count(isZero) == 1numbers.find { it > 0 } == 2
集合常用操作
val numbers = listOf(1, -1, 2)numbers.filter { it > 0 } == listOf(1, 2)numbers.map { it * it } == listOf(1, 1, 4)orders.flatMap { it.products }.maxBy { it.price } // order中product列表的单价最大orders.sortedBy { it.price } // order中product列表的单价排序orders.flatMap { it.products }.sumByDouble { it.price } // 求总价 double类型Shop.groupCustomersByCity(): Map<City, List<Customer>> = customers.groupBy { it.city } //返回按城市归类的列表var (expensive, cheap) = orders.partition { it.salePrice.toFloat() > 1.0f } // 把list按条件切分为两个 list
if not null 执行代码
val data = ……data?.let { …… // 代码会执行到此处, 假如data不为null}
单表达式函数
fun theAnswer() = 42
等价于
fun theAnswer(): Int { return 42}
使用可空布尔 需写等式,如果非空, 则与java一样
val b: Boolean? = ……if (b == true) { ……} else { // `b` 是 false 或者 null}
标准数据类 ex : data class User(var name:Stirng,var age:Int)
equals() 等价判断是 按hashCode() ,
toString() 格式是 “User(name=John, age=42)”,
componentN() 函数 按声明顺序对应于所有属性,
copy() 函数 可以复制类的参数值
如果 数据类 需要无参构造,例如
var user :User() ;
则其参数必须有 默认值 ,例如:
data class User(var name : Stirng= "" ,var age : Int =0)
密封类
sealed class Expr
密封类用来表示受限的类继承结构 ,用法类似于 枚举类,但是一个枚举类只有一个实例,但是密封类可以有多个,
一般用于swich-case 的情况
fun eval(expr: Expr): Double = when(expr) { is Const -> expr.number is Sum -> eval(expr.e1) + eval(expr.e2) NotANumber -> Double.NaN // 不再需要 `else` 子句,因为我们已经覆盖了所有的情况 }
阅读全文
1 0
- Kotlin笔记
- Kotlin 笔记
- Kotlin 笔记
- Android笔记 kotlin笔记
- jetbrain kotlin试用笔记
- Kotlin学习笔记
- Kotlin 学习笔记-01
- Kotlin学习笔记
- kotlin学习笔记
- Kotlin : 学习笔记一
- Kotlin学习笔记
- Kotlin入门基础笔记
- Kotlin学习笔记
- Kotlin使用简要笔记
- Kotlin学习笔记-大纲
- kotlin 学习笔记
- kotlin学习笔记
- Kotlin笔记一
- Tomcat下浏览器DELETE请求拒绝访问
- ECMAScript6(19):Module 模块
- CRM数据结构--CRM怎么找表
- storm 消息队列设置
- eCos flash模拟EEPROM读写NV
- Kotlin 笔记
- 轻轻揭开 b*tree 索引结构的神秘面纱
- linux uname 指令总结
- 二刷java核心技术_重温基础部分的练习代码保存
- C#实现win7任务栏进度条
- 小程序完美实现仿京东商城分类列表
- 你的不自律,正在慢慢毁掉你
- CI持续集成系统环境---部署Gitlab环境完整记录
- iOS开发debug跟release版本NSLog屏蔽方法