Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[kotlin]基础特性之when array loop #2

Open
zhangjin-007 opened this issue Feb 19, 2018 · 0 comments
Open

[kotlin]基础特性之when array loop #2

zhangjin-007 opened this issue Feb 19, 2018 · 0 comments

Comments

@zhangjin-007
Copy link
Owner

以前看过的东西不知道输出,最近春节看了kotlin,从最基础的开始,用这样博客的形式开始文档输出,旨在加强学习印象

首先
这个函数转化入参为字符串

 fun main(args: Array<String>) {
    println(convert2Uppercase("hello world"))
    println(convert2Uppercase(23))
}


fun convert2Uppercase(str: Any) : String?{
    if(str is String){
      return str.toUpperCase()
    }

    return null
}

在java中可能需要instanceof 判断然后再进行强制类型装换,kotlin编译器自动帮我们识别类型

在数组循环中,跟es6/typescript支持的有点相似,既能取出元素,也能取出index

fun main(args: Array<String>) {
    var array = intArrayOf(1, 2, 3, 4, 5)

    for (item in array) {
        println(item)
    }

    println("-----")

    for (index in array.indices) {
        println("array[$index] = ${array[index]}")
    }
    println("-----")

    for ((index, value) in array.withIndex()) {
        println("array[$index] = $value")
    }
}

可以打印一个元素,可以打印数组里面的index,可以打印index跟数组内容
看kotlin Int的实现可以看出,在面向jvm的时候,Int是原生数据类型,而intArrayOf返回的是int[]

我们再来看下强大的when

fun main(args: Array<String>) {
    println(myPrint("hello"))
    println(myPrint("world"))
    println(myPrint("hello world"))
    println(myPrint("nothing"))

    println("------")

    var a = 6

    var result = when(a){
        1 -> {
            println("a = 1")
            10
        }
        2 -> {
            println("a = 2")
            20
        }
        3, 4, 5-> {
            println("a =3 or a = 4 or 5")
            30
        }
        in 6..10-> {
            println("in range")
            40
        }
        else -> 50
    }
}

fun myPrint(str: String): String {
    return when (str) {
        "hello" -> "HELLO"
        "world" -> "WORLD"
        "hello world" -> "HELLO WORLD"
        else -> "other input"
    }
}

fun myPrint2(str: String): String = when (str) {
    "hello" -> "HELLO"
    "world" -> "WORLD"
    "hello world" -> "HELLO WORLD"
    else -> "other input"
}

when的使用相对于java中的switch case, ->这样的写法并不是lambda表达式,但是看看myPrint函数,语法比起java要风骚👍,也可以按照myPrint2函数的写法,直接返回一个表达式,语法更加简约👍,在最后的例子中,when的条件可以是枚举数,可以是枚举数范围,也可以是一个区间。由上面的例子可以看出kotlin when的语法糖对开发很友好,十分适合写我们平时复杂的业务开发🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant