android kotlin其它(二)集合、区间、操作符

来源:互联网 发布:筛子数据 编辑:程序博客网 时间:2024/06/05 03:55

集合
与大多数语言不同,Kotlin 区分可变集合和不可变集合(lists、sets、maps 等)
Kotlin 没有专门的语法结构创建 list 或 set。 要用标准库的方法,如 listOf()、 mutableListOf():可变、 setOf()、 mutableSetOf()。 在非性能关键代码中创建 map 可以用一个简单的惯用法来完成:mapOf(a to b, c to d)
List 和 set 有很多有用的扩展方法值得熟悉:

val items = listOf(1, 2, 3, 4)items.first() == 1items.last() == 4items.filter { it % 2 == 0 }   // 返回 [2, 4]val rwList = mutableListOf(1, 2, 3)rwList.requireNoNulls()        // 返回 [1, 2, 3]if (rwList.none { it > 6 }) println("No items above 6")  // 输出“No items above 6”val item = rwList.firstOrNull()

区间
区间表达式由具有操作符形式 .. 的 rangeTo 函数辅以 in 和 !in 形成。

if (i in 1..10) { // 等同于 1 <= i && i <= 10    println(i)}

for (i in 4..1) print(i) // 什么都不输出
如果你想倒序迭代数字呢?也很简单。你可以使用标准库中定义的 downTo() 函数

for (i in 4 downTo 1) print(i) // 输出“4321”

能否以不等于 1 的任意步长迭代数字? 当然没问题, step() 函数有助于此

for (i in 1..4 step 2) print(i) // 输出“13”for (i in 4 downTo 1 step 2) print(i) // 输出“42”

转换操作符
“不安全的”转换操作符
通常,如果转换是不可能的,转换操作符会抛出一个异常。因此,我们称之为不安全的。 Kotlin 中的不安全转换由中缀操作符 as

val x: String = y as String

请注意,null 不能转换为 String 因该类型不是可空的, 即如果 y 为空,上面的代码会抛出一个异常。 为了匹配 Java 转换语义,我们必须在转换右边有可空类型,就像:

val x: String? = y as String?

“安全的”(可空)转换操作符
为了避免抛出异常,可以使用安全转换操作符 as?,它可以在失败时返回 null

val x: String? = y as? String

类型别名为现有类型提供替代名称。 如果类型名称太长,你可以另外引入较短的名称,并使用新的名称替代原类型名。
typealias