美文网首页Android areaKotlin编程Android知识
使用Kotlin开发Android--常见的fun函数定义

使用Kotlin开发Android--常见的fun函数定义

作者: 街头客 | 来源:发表于2017-04-01 10:01 被阅读83次

    上一篇:环境的搭建
    下一篇:kotlin常见的集合函数运用

    上一篇具体讲了在Android Studio中怎么搭建Kotlin环境的搭建,以及简单的写了一个Hello World的DEMO。

    那么今天我们一起来学习一下常见的fun函数定义。我大概定义了11个比较常见的函数,一起来看看,喜欢的话,记得支持一下~~~

    返回值为String的类型,代码如下:

    /**
     * 返回值为String的函数 2017/3/31 14:38
     */
    fun hello() : String {
        return "Hello world"
    }
    

    也可以使用推导式的返回值,代码如下:

    /**
     * 推导型的返回值为String的函数 2017/3/31 14:38
     */
    fun hello1() = "Hello world..."
    

    定义没有返回值的函数,相当于Java的void方法

    /**
     * 相当于没有返回值的void 2017/3/31 14:42
     */
    fun hello3(name:String): Unit {
        println("Hello $name") // 直接使用$就可以引用参数 2017/3/31 14:47
    
    }
    

    上述的返回类型Unit是可以省略的,代码如下:

    /**
     * hello4() = hello3() 2017/3/31 14:48
     */
    fun hello4(name:String) {
        println("Hello $name")
    }
    

    推导式函数,单表达形式

    /**
     * 推导型函数(单表达形式) 2017/3/31 14:56
     * PS:  ${} 相当于执行一个小脚本 2017/3/31 14:57
     */
    fun hello5(b:Boolean) = if (b) "Hello ${"CMX".replace("MX", "mx")}" else "Hello ${"ZL".replace("L", "l")}"
    

    参数的默认值,代码如下:

    /**
     * 参数默认值 2017/3/31 15:56
     */
    fun hello6(name:String = "CCB") {
        println("Hello $name")
    }
    

    使用部分参数默认值,代码如下:

    /**
     * 参数默认值,使用部分参数 2017/3/31 15:59
     */
    fun hello7(name:String, age:Int = 12, area:String = "SZ") {
        println("Hello $name.")
        println("Age is $age.")
        println("Area is $area.")
    }
    

    使用下面代码进行调用:

    hello7("CCB", area = "深圳") // 使用部分默认参数
    

    创建内部函数,代码如下:

    /**
     * 内部函数 2017/3/31 16:04
     */
    fun hello8(name:String = "CCB") {
    
        fun helloSub8(age:Int) {
            println("Age is $age.")
        }
    
        println("Hello $name.")
        helloSub8(12)
    }
    

    尾递归函数,代码如下:

    /**
     * 2017/3/31 16:34
     * Kotlin支持一种称为尾递归(tail recursion)的函数式编程方式.这种编程方式,到底是用来干什么的呢?
     * 这种方式是基于函数表达式和递归函数,来实现某些基本循环的的算法,采用这种方式可以有效的避免栈溢出的危险。
     * 当函数被关键字tailrec修饰,同时满足尾递归(tail recursion)的函数式编程方式的形式时,
     * 编译器就会对代码进行优化, 消除函数的递归调用, 产生一段基于循环实现的, 快速而且高效的代码。
     */
    tailrec fun hello9(a:Int, b:Int):Unit = if (a + b > 20) println(a + b) else hello9(a + 1, b + 1)
    

    上述使用传统的写法,代码如下:

    /**
     * 对hello9的传统的写法 2017/3/31 16:39
     */
    fun hello10(a:Int, b:Int):Unit {
        var tmpA = a
        var tmpB = b
    
        while (tmpA + tmpB <= 20) {
            tmpA += 1
            tmpB += 1
        }
    
        println(tmpA + tmpB)
    
        /*
            注:
                要符合 tailrec 修饰符的要求, 函数必须在它执行的所有操作的最后一步, 递归调用它自身
                如果递归调用后还有其他逻辑代码,不能使用尾递归
                尾递归不能用在try/catch/finally 结构内
                尾递归目前只能用在JVM环境内
         */
    }
    

    扩展函数,下面DEMO写的是String的扩展函数,代码如下:

    /**
     * 为String添加扩展函数 2017/4/1 09:33
     */
    fun String.hello11() {
        println("CCB")
    }
    

    使用下面的代码进行调用,如下:

    "CMX".hello11() // String的扩展函数 2017/4/1 09:51
    

    以上写的11个常见的函数定义,应该足够我们应付日常的开发工作了。从目前的函数定义看起来,确实要比Java来得简单易用很多。

    更重要的是。。。

    可以直接与Java一起使用~
    可以直接与Java一起使用~~
    可以直接与Java一起使用~~~

    所以还是有必要学习一下Kotlin,不说全部替换掉Java,用Kotlin来开发Android,但结合使用还是会提高一定的开发效率。

    好了,今天的fun函数定义就告一段落了。希望对想了解的朋友们能有所帮助~

    谢谢支持,谢谢~~~

    相关文章

      网友评论

        本文标题:使用Kotlin开发Android--常见的fun函数定义

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