博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kotlin 系列(二) 基本语法(2)
阅读量:5771 次
发布时间:2019-06-18

本文共 1857 字,大约阅读时间需要 6 分钟。

使用类型检测及自动类型转换

is 运算符检测一个表达式是否某类型的一个实例。 如果一个不可变的局部变量或属性已经判断出为某类型,那么检测后的分支中可以直接当作该类型使用,无需显式转换。

fun getStringLength(obj: Any): Int? {    if (obj is String) {        // `obj` 在该条件分支内自动转换成 `String`        return obj.length    }    // 在离开类型检测分支后,`obj` 仍然是 `Any` 类型    return null}复制代码

使用 for 循环

for 循环可以对任何提供迭代器(iterator)的对象进行遍历,这相当于像 C# 这样的语言中的 foreach 循环。语法如下

for (item in collection) print(item)复制代码

或者

val items = listOf("apple", "banana", "kiwifruit")for (item in items) {    println(item)}复制代码

亦或是

val items = listOf("apple", "banana", "kiwifruit")for (index in items.indices) {    println("item at $index is ${items[index]}")}复制代码

使用 while 表达式

使用 while

while (x > 0) {    x--}复制代码

或者 do..while

do {  val y = retrieveData()} while (y != null) // y 在此处可见复制代码

使用 when 表达式

when 取代了类 C 语言的 switch 操作符。其最简单的形式如下

when (x) {    1 -> print("x == 1")    2 -> print("x == 2")    else -> { // 注意这个块        print("x is neither 1 nor 2")    }}复制代码

如果很多分支需要用相同的方式处理,则可以把多个分支条件放在一起,用逗号分隔

when (x) {    0, 1 -> print("x == 0 or x == 1")    else -> print("otherwise")}复制代码

我们可以用任意表达式(而不只是常量)作为分支条件

when (x) {    parseInt(s) -> print("s encodes x")    else -> print("s does not encode x")}复制代码

使用区间(range)

使用 in 运算符来检测某个数字是否在指定区间内

val x = 10val y = 9if (x in 1..y+1) { //等同于 x >=1 && x <=y+1    println("fits in range")}复制代码

检测某个数字是否在指定区间外

val list = listOf("a", "b", "c")if (-1 !in 0..list.lastIndex) {    println("-1 is out of range")}if (list.size !in list.indices) {    println("list size is out of valid list indices range, too")}复制代码

要以相反的顺序迭代数字,使用 downTo 函数

for(i in 4 downTo 1) print (i)复制代码

也可以用任意步骤(不一定是1)迭代数字。这是通过该 step 功能完成的

for (i in 1 ... 8 step 2) print(i)    println()    for (i in 8 downTo 1 step 2) print(i)}复制代码

输出为

13578642复制代码

要迭代不包含其end元素的数字范围

for(i in 1 to 10){ //i 从 1 到 10,10 被排除在外    print(i)}复制代码

转载于:https://juejin.im/post/5cee428e6fb9a07f08707888

你可能感兴趣的文章
SPDY以及HTTP2.0
查看>>
字符串转数字简单代码实现
查看>>
JSP 9 个内置对象
查看>>
Python面向对象
查看>>
模板类中类内声明类外定义的函数,在类外定义时没加模板时的报错
查看>>
10分钟学会php面相对象基础(Ⅳ)
查看>>
epoll原理解释(转)
查看>>
一直都是技术,今天来点儿文艺范儿……
查看>>
AutoFac使用方法总结
查看>>
JS回调函数
查看>>
[转]真正了解泰勒公式
查看>>
Spring boot整合shiro权限管理
查看>>
Android连接蓝牙耳机播放音乐
查看>>
961. N-Repeated Element in Size 2N Array
查看>>
Binary Tree Level Order Traversal
查看>>
遍历文件夹及子文件夹_函数
查看>>
时间服务器/时间同步配置
查看>>
asp.net core系列 31 EF管理数据库架构--必备知识 反向工程
查看>>
第二次作业+105032014108
查看>>
C#键值对容器
查看>>