首页 > 其他分享 >Kotlin 逻辑控制

Kotlin 逻辑控制

时间:2023-01-13 09:44:05浏览次数:47  
标签:语句 控制 逻辑 num1 num2 Int Kotlin when name

程序的逻辑控制

 if条件语句

Kotlin中的if语句相比于Java有一个额外的功能,它是可以有返回值的,返回值就是if语句每一个条件中最后一行代码的返回值。

fun largerNumber(num1: Int, num2: Int): Int {
    var value = 0
    if (num1 > num2) {
        value = num1
    } else {
        value = num2
    }
    return value
}
//Kotlin中的if语句相比于Java有一个额外的功能,它是可以有返回值的,
// 返回值就是if语句每一个条件中最后一行代码的返回值。因此,上述代码就可以简化成如下形式:
fun largerNumber2(num1: Int, num2: Int): Int {
    val value = if (num1 > num2) {
        num1
    } else {
        num2
    }
    return value
}
//if语句使用每个条件的最后一行代码作为返回值,并将返回值赋值给了value变量。
// 由于现在没有重新赋值的情况了,因此可以使用val关键字来声明value变量,最终将value变量返回。
//仔细观察上述代码,会发现value其实也是一个多余的变量,可以直接将if语句返回,这样代码将会变得更加精简,如下所示:
fun largerNumber3(num1: Int, num2: Int): Int {
    return if (num1 > num2) {
        num1
    } else {
        num2
    }
}
//当一个函数只有一行代码时,可以省略函数体部分,直接将这一行代码使用等号串连在函数定义的尾部。
// 虽然上述代码中的largerNumber()函数不止只有一行代码,但是它和只有一行代码的作用是相同的,
// 只是返回了一下if语句的返回值而已,符合该语法糖的使用条件。那么我们就可以将代码进一步精简:
fun largerNumber4(num1: Int, num2: Int) = if (num1 > num2) {
    num1
} else {
    num2
}
//还可以将上述代码再精简一下,直接压缩成一行代码:
fun largerNumber5(num1: Int, num2: Int) = if (num1 > num2) num1 else num2

when条件语句

Kotlin中的when语句有点类似于Java中的switch语句,但它又远比switch语句强大得多。

when语句和if语句一样,也是可以有返回值的,因此我们仍然可以使用单行代码函数的语法糖。when语句允许传入一个任意类型的参数,然后可以在when的结构体中定义一系列的条件,格式是:
匹配值 -> { 执行逻辑 }
当执行逻辑只有一行代码时,{ }可以省略。
//if语句实现
fun getScore(name: String) = if (name == "Tom") {
    86
} else if (name == "Jim") {
    77
} else {
    0
}

//使用when语句的时候,现在我们将代码改成如下写法:
fun getScore2(name: String) = when (name) {
    "Tom" -> 86
    "Jim" -> 77
    else -> 0
}

//除了精确匹配之外,when语句还允许进行类型匹配
fun checkNumber(num: Number) {
    when (num) {
        is Int -> println("number is Int")
        is Double -> println("number is Double")
        else -> println("number not support")
    }
}
//is关键字就是类型匹配的核心,它相当于Java中的instanceof关键字。

//when语句还有一种不带参数的用法,虽然这种用法可能不太常用,但有的时候却能发挥很强的扩展性。
fun getScore3(name: String) = when {
    name == "Tom" -> 86
    name == "Jim" -> 77
    else -> 0
}
//Kotlin中判断字符串或对象是否相等可以直接使用==关键字,而不用像Java那样调用equals()方法。

//可能会觉得这种无参数的when语句写起来比较冗余,但有些场景必须使用这种写法才能实现。举个例子
fun getScore4(name: String) = when {
    name.startsWith("Tom") -> 86
    name == "Jim" -> 77
    else -> 0
}

循环语句

Kotlin也提供了while循环和for循环,其中while循环不管是在语法还是使用技巧上都和Java中的while循环没有任何区别

Kotlin在for循环方面做了很大幅度的修改,Java中最常用的for-i循环在Kotlin中直接被舍弃了,而Java中另一种for-each循环则被Kotlin进行了大幅度的加强,变成了for-in循环

// 两端都是闭区间
val range = 0..10
// 左闭右开的区间
val range2 = 0 until 10
// step关键字 设置步长
val range3 = 0 until 10 step 2
// downTo关键字 降序的区间
val range4 = 10 downTo 1

for (i in range) {
    println(i)
}

 

 

标签:语句,控制,逻辑,num1,num2,Int,Kotlin,when,name
From: https://www.cnblogs.com/ooo0/p/17048607.html

相关文章

  • strapi系列--如何自定义非界面化的接口,定制化自己的业务逻辑
    为什么要进行后端定制呢?在实际开发过程中,项目中有些需求是不需要创建界面化接口的,需要我们定制化自己的业务逻辑,那么我们该如何处理这个需求呢?本文以图文并茂的形式,定制一......
  • 【视频】R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险|数据分享|附代码数据
    原文链接:http://tecdat.cn/?p=22410 最近我们被客户要求撰写关于逻辑回归的研究报告,包括一些图形和统计输出。本文介绍了逻辑回归并在R语言中用逻辑回归(Logistic回归)模......
  • JS-逻辑判断
      表达式(expression)相当于JS语言中的一个短语,包括变量、字面量和运算符;即一行语句 JS一元运算+-*/% 逻辑与&&逻辑或|| 三元表达式varresult=条......
  • 控制台输出中文字符
    有时调试需要在控制台输出string(使用printf),wstring(wprintf)。但是当wstring中包含中文等Unicode字符时,wprintf就无法正确输出中文字符。此时可以使用_cwprintf......
  • 直流电机控制(PWM)+普中51单片机+江科大自化协
    1实验现象 2实验原理通过按键来控制PWM占空比实现对直流电机的调速,数码管则显示当前速度挡位信息。(1)直流电机的控制是通过设置PWM波的占空比来控制直流电机的转速,......
  • 为什么我放弃Java,选择Kotlin(靠特灵)?
    今天查了一下,竟然发现Oracle的JDK听说是收费了。也就是说,你要用于生产环境的话,Oracle一旦查到你,你就要交钱的。我本身是个穷光蛋,哪还有钱交给Oracle。为了避免繁琐的法律制......
  • 性能测试|JMeter逻辑控制器(四)
    Jmeter逻辑控制器之循环控制器这篇文章介绍下循环控制器的使用。认识循环控制器按照之前的文章步骤,我们新建一个循环控制器,用于介绍循环控制器如下图:新增一个循环控制器......
  • 性能测试|JMeter逻辑控制器(五)
    Jmeter逻辑控制器之交替控制器快过年了,最近工作不是特别忙,最近自己在学习JMeter,并把学习过程分享到博客中,今天呢,学习交替控制器。认识交替控制器老规矩,先来认识一下交替......
  • 性能测试|JMeter逻辑控制器(六)
    Jmeter逻辑控制器之WhileControllerwhilecontroller用于控制采样器循环执行,直到条件为false时,退出循环认识WhileController保留项目,认识whilecontroller,我们就先创......
  • 性能测试|JMeter逻辑控制器(七)
    Jmeter逻辑控制器之IncludeController认识IncludeControllerIncludeController:译为包含控制器,用来添加TestFragment(测试片段)。具体是什么意思呢,我们先来了解下Te......