美文网首页
一. Kotlin语言基础(语法篇)

一. Kotlin语言基础(语法篇)

作者: lam_Seven | 来源:发表于2021-07-08 16:06 被阅读0次

    Kotlin 基本语法官方文档:
    https://kotlinlang.org/docs/basic-syntax.html
    以下是罗列的详细点

    1. source files can be placed arbitrarily in the file
    package my.demo
    
    import kotlin.text.*
    
    2. an entry point of a Kotlin application is the main function
    fun main(args: Array<String>) {
        println(args.contentToString())
    }
    
    3. Print and Println
    fun main() {
        print("Hello ")
        print("world!")
    }
    
    print:
    Hello world!
    
    fun main() {
        println("Hello world!")
        println(42)
    }
    
    print:
    Hello world!
    42
    
    4.Function --- using fun keyword

    Unit return Type can be omitted(可以不写返回值)

    fun printSum(a: Int, b: Int): Unit {
        println("sum of $a and $b is ${a + b}")
    }
    

    or

    fun printSum(a: Int, b: Int){
        println("sum of $a and $b is ${a + b}")
    }
    

    using default arguments can reduces a number of overloads compared to other languages

    fun read(
        b: ByteArray,
        off: Int = 0,
        len: Int = b.size,
    ) { /*...*/ }
    
    5. val & var

    val : read-only local variables are defined using the keyword
    var: can be reassigned

    6. class

    Inheritance between classes is declared by a colon (: ). Classes are final by default; to make a class inheritable, mark it as open.

    open class Shape
    
    class Rectangle(var height: Double, var length: Double): Shape() {
        var perimeter = (height + length) * 2
    }
    
    7. comments
    /**
     * A group of *members*.
     *
     * This class has no useful logic; it's just a documentation example.
     *
     * @param T the type of a member in this group.
     * @property name the name of this group.
     * @constructor Creates an empty group.
     */
    class Group<T>(val name: String) {
        /**
         * Adds a [member] to this group.
         * @return the new size of the group.
         */
        fun add(member: T): Int { ... }
    }
    

    往后需要编写api文档的可以参考:
    https://kotlinlang.org/docs/kotlin-doc.html#block-tags

    8.String templates

    using $[变量] or ${ [变量.子变量] }

    val s2 = "${s1.replace("is", "was")}, but now is $a"
    
    9. Conditional expresssion

    if 官方文档 : https://kotlinlang.org/docs/control-flow.html#if-expression

    if 在简单函数中的运用

    fun maxOf(a: Int, b: Int): Int {
        if (a > b) {
            return a
        } else {
            return b
        }
    }
    

    or 简写成

    fun maxOf(a: Int, b: Int) = if (a > b) a else b
    

    没有三目运算,所以 if 是很重要的角色
    可以替代三目运算写成

    val max = if (a > b) a else b
    

    也可以使用if 在进行复杂运算之后为变量赋值 ( else branch is mandatory )

    val max = if (a > b) {
       /** 稍微复杂运算 */
        a /** 返回值  没有 return关键字*/
    } else {
        print("Choose b")
        c
    }
    
    10 for loop

    使用value

      for ( `[value]` in`[数组]`) {
            println(value)
        }
    

    or 使用index

    for (index in items.indices) {
        println("item at $index is ${items[index]}")
    }
    

    or 使用 index&value

    for ((index, value) in array.withIndex()) {
        println("the element at $index is $value")
    }
    
    11. while and do-while
     var a = 10
        do {
            a --
            print(a)
        }while (a > 5)
    
    print:
    9876
    
    12 nothing type
    val s = person.name ?: return
    
    13. 打破并继续标签

    Kotlin 中的任何表达式都可以用label 标记。标签具有标识符后跟@符号的形式,例如:abc@, fooBar@。要标记一个表达式,只需在它前面添加一个标签。

    for循环贴上标签

    loop@ for (i in 1..10) {
        // ……
    }
    

    用标签限制break

    loop@ for (i in 1..10) {
        for (j in 1..10) {
            if (……) break@loop
        }
    }
    

    被标签限制的break 跳转到指定标签的执行点,也就是一次break 跳出两重循环

    用标签限制continue 如果将上述代码中的break 换成continue 那结果就是直接进行第一重循环的下一次迭代

    14. return

    当前函数中 后续代码不执行

    15.When 类似于 switch
    fun describe(obj: Any): String =
        when (obj) {
            1          -> "One"
            "Hello"    -> "Greeting"
            is Long    -> "Long"
            !is String -> "Not a string"
            else       -> "Unknown"
        }
    
    fun main() {
        println(describe(1))
        println(describe("Hello"))
        println(describe(1000L))
        println(describe(2))
        println(describe("other"))
    }
    
    print:
    One
    Greeting
    Long
    Not a string
    Unknown
    
    16.? 类似于swift 用法

    相关文章

      网友评论

          本文标题:一. Kotlin语言基础(语法篇)

          本文链接:https://www.haomeiwen.com/subject/kdwoultx.html