kotlin Control Flow

kotlin流程控制语句,官网:https://kotlinlang.org/docs/reference/control-flow.html

Control Flow: if, when, for, while

kotlin中的流程语句主要有四个 if when  for while,现在一个个来.

If Expression

In Kotlin, if is an expression, i.e. it returns a value. Therefore there is no ternary operator (condition ? then : else), because ordinary if works fine in this role

在Kotlin中,如果是表达式,即返回一个值。 因此,没有三元运算符(条件?then:else),因为普通if在此角色下工作正常

//传统写法
fun main(){
    var a:Int  = 3;
    var b:Int = 4;
    if(a>b){
        print("a大于b")
    }else{
        print("a小于b")
    }
}

上面是传统写法,其实还有更简单的写法,使用表达式的方式

//表达式
fun main(){
    var a:Int  = 3;
    var b:Int = 4;
    val max = if (a > b) a else b
    print("max-->"+max);
}

如果if或者else里面下的逻辑代码特别多,那使用这个就行不通了,那还是要和Java中的if...else一样

如果分支可以是块,并且最后一个表达式是块的值,这点就比Java强很多了

//表达式
fun main(){
    var a:Int  = 3;
    var b:Int = 4;
    val max = if (a > b) {
        print("Choose a")
        a
    } else {
        print("Choose b")
        b
    }
    print(max)
}

 if或者else语句的最后一句是表达式中的值,那么这个时候if表达式的返回值就是这个值了,

When Expression

when语句就好比Java中的switch,但是比switch强很多

fun main(args:Array<String>){
    var x:Int=1
    when (x) {
        1 -> print("x == 1")
        2 -> print("x == 2")
        else -> { // Note the block
            print("x is neither 1 nor 2")
        }
    }
}

when依次将其参数与所有分支匹配,直到满足某些分支条件。 when可以用作表达式或语句。 如果将其用作表达式,则满足的分支的值将成为整个表达式的值。 如果将其用作语句,则忽略各个分支的值。 (与if一样,每个分支可以是一个块,其值是该块中最后一个表达式的值。)

如果其他分支条件都不满足,则评估else分支。 如果将when用作表达式,则else分支是必需的,除非编译器可以证明所有可能的情况都被分支条件覆盖(例如,枚举类条目和密封类子类型)

如果许多情况下应以相同的方式处理,则分支条件可以用逗号组合,比如

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

上面0和1处理方式是一样的,则可以放在一块处理.

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

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

相当于Java中的case中不一定是常量 在kotlin中表达式也可以作为case的条件

我们还可以检查范围或集合中处于或!

when (x) {
    in 1..10 -> print("x is in the range")
    in validNumbers -> print("x is valid")
    !in 10..20 -> print("x is outside the range")
    else -> print("none of the above")
}

在kotlin中用于在某个范围可以使用..比如1到100 可以写成这样 1..100 代码表示

var i = 1..100

For Loops

for (item in collection) print(item)

在kotlin中for表达式要比Java中书写更容易, 跟groovy语法比较像 在kotlin中for循环的写法

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

简单的例子:

fun main(args:Array<String>){
    val list = listOf<Int>(1,2, 3,4)
    for(item:Int in list){
        println("item-->"+item)
    }
}

for循环不一定一定要使用集合或者数组,也可以使用范围,这点在Java中是没有这个语法的

fun main(args: Array<String>){
    for (i in 1..3) {
        println(i)
    }
}

for循环在有些需求我们要求是倒序 那么在kotlin中怎么写呢? kotlin中提高了downTo

fun main(args:Array<String>){
    for (i in 6 downTo 5) {
        println(i)
    }
}

downTo后面的数字表示倒序到那 上面是5表示从6到5 就二个数字

downTo后面的数字不能大于前面的数字

 

1、指数名称:北京大学数字普惠金融指数 2、课题组:本指数北京大学数字金融研究中心蚂蚁科技集团研究院组成的联合课题组负责编制,课题组顾问包括北京大学数字金融研究中心主任黄益平,蚂蚁集团研究院院长李振华。第一期指数2011-2015)课题组成员主要包括:郭峰、孔涛、王靖一、张勋、程志云、阮方圆、孙涛、王芳。第二期到第六期指数(2016-2023)课题组成员主要包括:郭峰、王靖一、程志云、李勇国、王芳。课题组也获得了北京大学蚂蚁集团多位同事的技术支持。 3、指数属性:这套指数包括数字普惠金融指数,以及数字金融覆盖广度数字金融使用深度以及普惠金融数字化程度;此外使用深度指数中还包含支付、信贷、保险、信用、投资、货币基金等业务分类指数;但由于监管公司数据安全审核等方面的原因,2019-2023的信用货币基金分指数,没有对外公布。 4、指数范围:中国内地31个省(直辖市、自治区,简称“省”)、337个地级以上城市(地区、自治州、盟等,简称“城市”),以及约2800个县(县级市、旗、市辖区等,简称“县域”);部分地区数据存在缺失;港澳台地区数据暂未包括。 5、时间跨度:省级城市级指数时间跨度为2011-2023,县域指数时间跨度为2014-2023。 6、地区代码说明:在2011-2023期间,中国部分地区进行了“撤地设市”“县(市)改区”等改革,调整了地区名称行政区划代码,但并不影响本指数统计;本表中城市代码同时保留了20142018两个版本,县域名称行政区划代码则以2014底的代码为准,以方便使用者合并其他经济社会数据进行分析。 7、引用说明:欢迎各界人士使用指数,如有使用本数据,请注明所用数据为“北京大学数字普惠金融指数”;同时烦请按照以下文献引用方式引用我们的成果:郭峰、王靖一、王芳、孔涛、张勋、程志云,《测度中国数字普惠金融发展: 指数编制与空间特征》,《经济学季刊》,2020第19卷第4期,第1401-1418页。 8、指数包括: index_aggregate(数字金融发展总指数), coverage_breadth(数字金融覆盖广度指数,二级维度3-1), usage_depth(数字金融使用深度指数,二级维度3-2), payment(电子支付指数),insurance(网络保险指数), monetary_fund,investment(网络投资指数), credit(网络信贷指数), credit_investigation, digitization_level(普惠金融数字化程度指数,二级维度3-3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值