Kotlin基础

2019-04-09  本文已影响0人  agile4j
var x = 5 //自动推断出‘Int’类型
var y: Int = 1 //显式指定‘Int’类型
val max = if (a > b) a else b
val max = if (a > b) {
    print("max is a")
    a
} else {
    print("max is b")
    b
}
if(true) 1 else 0
fun cases(obj:Any){
    when(obj){
        1,"one" -> print("第一项")
        in 2..10 -> println("在区间[2,10]中")
        !in validNumbers -> println("不在集合validNumbers中")
        "hello" -> print("这个字符串是hello")
        is Long -> print("这是一个Long类型的数据")
        !is String -> print("这不是一个String类型的数据")
        else -> print("else类似于Java中的default")
    }
}
for(arg in args){
    println(arg)
}

for(i in array.indices){
    println(args[i])
}

for((index, value) in array.withIndex()){
    println(the element at $index is $value)
}
fun sum(a: Int, b: Int) = a + b
fun max(a: Int, b: Int) = if (a > b) a else b
val sum = fun (a: Int, b: Int) = a + b
sum(1,1) // 2
val sumf = fun (a: Int, b: Int) = {a + b} 
sumf(1,1).invoke() // 2
fun returnDemo_1(){
    println("START " + ::returnDemo_1.name)
    val intArray = intArrayOf(1,2,3,4,5)
    intArray.forEach{
        if(it == 3) return
        println(it)
    }
}
//1
//2
fun returnDemo_2(){
    println("START " + ::returnDemo_2.name)
    val intArray = intArrayOf(1,2,3,4,5)
    intArray.forEach{
        fun (a: Int){
            if(a == 3) return
            println(a)
        }
    }
}
//1
//2
//4
//5
fun returnDemo_3() {
    val intArray = intArrayOf(1,2,3,4,5)
    intArray.forEach here@ {
        if( it == 3 ) return@here //指令跳转到lambda表达式标签here@处,继续下一个it=4的遍历循环
        println(it)
    }
}
//1
//2
//4
//5
fun returnDemo_4() {
    val intArray = intArrayOf(1,2,3,4,5)
    intArray.forEach {
        if (it == 3) return@forEach 
        println(it)
    }
}
fun breakDemo_2() {
    outer@ for (outer in 1..5) {
        for (inner in 1..10) {
            println("inner=" + inner)
            println("outer=" + outer)
            if (inner % 2 == 0){
                break@outer
            }
        }
    }
}
//inner=1
//outer=1
//inner=2
//outer=1
fun fail(msg:String):Nothing { throw IllegalArgumentException(msg) }

// 如果把一个throw表达式的值赋值给一个变量,需要显式声明类型为Nothing
// 另外,因为ex变量是Nothing类型,没有任何值,所以无法当做参数传给函数
val ex:Nothing = throw Exception("YYY")

END

参考资料:《Kotlin极简教程》

上一篇 下一篇

猜你喜欢

热点阅读