Kotlin学习日记-控制流程

1.条件与循环

1.1 If表达式

在 Kotlin 中,if 是一个表达式:它会返回一个值。 因此就不需要三元运算符(条件 ? 然后 : 否则),因为普通的 if 就能胜任这个角色

var max = a 
if (a < b) max = b

// With else 
var max: Int
if (a > b) {
    max = a
} else {
    max = b
}

// 作为表达式
val max = if (a > b) a else b

如果您将if其用作表达式,例如,用于返回其值或将其分配给变量,则else分支是强制性的。

1.2 When表达式

when定义具有多个分支的条件表达式。它类似于类switchC 语言中的语句。它的简单形式看起来像这样。

when (x) {
    1 -> print("x == 1")
    2 -> print("x == 2")
    else -> {
        print("x is neither 1 nor 2")
    }
}

当然 when也是可以作为一个表达式使用

val data=when (x) {
    1 -> "data1"
    2 -> "data2"
    else -> "data3"
}

1.3 For循环

for循环可以对任何提供迭代器的对象进行遍历,这将像 C# 这样的语言中的foreach循环。 for如下所示:

for (item in collection) print(item)

for循环体可以是一个代码块

for (item: Int in ints) {
    // ……
}

如上所述,for 可以循环遍历任何提供了迭代器的对象。这意味着:

  • 有一个成员函数或者扩展函数 iterator() 返回 Iterator<>:
  • 有一个成员函数或者扩展函数 next()
  • 有一个成员函数或者扩展函数 hasNext() 返回 Boolean。

这三个函数都需要标记为 operator。

实现类似Java那样通过for循环遍历数组,通过区间遍历与array.indices

fun main() {
val array = arrayOf("a", "b", "c")
    for (i in array.indices) {
        println(array[i])
    }
}

还有其他循环方式

fun main(){
val datas = arrayListOf("1", "2", "3")
    datas.forEach {
        println(it)
    }
    datas.forEachIndexed { index, data ->
        println(data + index)
    }
}

1.4 While循环

while和do-while循环在满足条件时连续执行它们的代码块。

  • while检查条件,如果满足,则执行主体,然后返回条件检查。
  • do-while执行代码块,然后检查条件。如果满足,则循环重复。因此,无论条件如何,主体都do-while 至少执行一次。
while (x > 0) {
    x--
}

do {
  val y = retrieveData()
} while (y != null) // y 在此处可访问

2.返回与跳转

Kotlin 有三种结构化跳转表达式:

  • return 默认从最直接包围它的函数或者匿名函数返回。
  • break 终止最直接包围它的循环。
  • continue 继续下一次最直接包围它的循环。

2.1 Break与Continue与Return

  1. 在 Kotlin 中任何表达式都可以用标签来标记。 标签的格式为标识符后跟 @ 符号,例如:abc@、fooBar@。 要为一个表达式加标签,我们只要在其前加标签即可。
  2. 我们可以用标签限定 break 或者 continue 或者 return 跳出:
loop@ for (i in 1..100) {
    if (……) return@loop
}

3 异常

3.1 异常类

Kotlin 中所有异常类继承自 Throwable 类。 每个异常都有消息、堆栈回溯信息

try {
    // 一些代码
} catch (e: SomeException) { //可以有零到多个 catch 块
    // 处理程序
} finally {
    // 可选的 finally 块
}

Try是一个表达式

try 是一个表达式,意味着它可以有一个返回值

val a: Int? = try { input.toInt() } catch (e: NumberFormatException) { null }

try-表达式的返回值是 try 块中的最后一个表达式或者是(所有)catch 块中的最后一个表达式。 finally 块中的内容不会影响表达式的结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值