Android areaKotlin编程Android知识

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

2017-04-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函数定义就告一段落了。希望对想了解的朋友们能有所帮助~

谢谢支持,谢谢~~~

上一篇下一篇

猜你喜欢

热点阅读