表达式是有值的,java 的if,switch都是分支语句并不是表达式
中缀表达式是运算符重载,只有一个参数,且使用infix修饰 fun的函数
when 表达式是kotlin 替换java语言的switch语句的,功能很是强大啊
if 表达式
package com.testOperaters
/**
* Created by jingwen on 19/4/14.
*/
fun main(args: Array<String>) {
//条件语句
var inputNum: Int = 1234561
if (inputNum == 123456) {
println("登录成功")
} else {
println("密码错误,登录失败")
}
//条件表达式,有值哈
var result: String = if (inputNum == 123456) {
"登录成功"
} else {
"密码错误,登录失败"
}
println(result)
//条件表达式,强悍吧
var a:Int = 12
var b:Int = 100
var isALargerB:Boolean = if(a>b){true}else{false}
println("$a > $b :$isALargerB")
}
执行结果:
密码错误,登录失败
密码错误,登录失败
12 > 100 :false
Process finished with exit code 0
中缀表达式:
package com.testOperaters
/**
* Created by jingwen on 19/4/14.
*/
class Person{
/**
* 这种特殊的运算符重载, 只能有一个参数,且使用infix修饰,不能使用operater修饰
*/
infix fun on(any:Any):Boolean{
if(any.toString() == "earth"){
return true
}
if(any.toString() == "sun"){
return false
}
return true
}
}
fun main(args: Array<String>) {
var arrays:Array<String> = arrayOf("jingwen","zhulina","chengcheng","suanwen")
//
println("zhunlina 在数组里吗?")
println("zhulina" in arrays)
println("刘亦菲 在数组里吗?")
println("刘亦菲" in arrays)
//on不是定义好的操作符,我们可以自己定义,比java强吧?
var person:Person = Person()
println("人在地球上面吗")
println(person on "earth")
}
执行结果:
zhunlina 在数组里吗?
true
刘亦菲 在数组里吗?
false
人在地球上面吗
true
Process finished with exit code 0
when表达式:
package com.testOperaters
/**
* Created by jingwen on 19/4/14.
*/
/**
* kotlin 已经把switch 干掉了
* 使用更牛逼的分支表达式when,当什么条件就干什么事
* 可以使用范围 当做case
*/
fun main(args: Array<String>) {
var state: Long = 123;
when (state) {
in 0..100 -> {
println("$state 在 0~100")
}
// is Int -> {
// println("$state 是整数类型")
// }
!in 100..222 -> {
println("$state 不在 100~200")
}
else -> {
println("我谁都不属于,我是宇宙大将军")
}
}
}
执行结果:
我谁都不属于,我是宇宙大将军