使用Kotlin开发Android--常见的fun函数定义
2017-04-01 本文已影响83人
街头客
上一篇具体讲了在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函数定义就告一段落了。希望对想了解的朋友们能有所帮助~
谢谢支持,谢谢~~~