# 1. 函数的定义
# 1.1. 函数定义语法
函数的语法格式具体如下:
```
fun 函数名称(参数名称: 参数类型, ...): 返回值类型{
return 返回值
}
```
比如:
~~~
fun add(numberA: Int, numberB: Int): Int{
return numberA + numberB
}
~~~
注意到这里的函数体并没有什么其余的部分,也就是其实就执行了一个表达之`numberA+numberB`,可以将上面的函数简写为:
~~~
fun add(A: Int, B: Int) = A + B
~~~
对于这样没有指定返回值类型的函数,编辑器会根据函数的返回值进行推断。
# 1.2. 默认参数
类似于`Python`中的写法,可以在定义函数的时候指定默认参数,比如下面的案例:
~~~
fun getUserName(name: String = "张三"):String = name
fun main() {
println(getUserName())
println(getUserName("李四"))
}
~~~
结果为:
```
张三
李四
```
# 1.3. 可变参数
在`Java`和`Python`中均有可变参数的存在,可变参数,是指参数类型确定但个数不确定的参数,可变参数通过`vararg`关键字标识,我们可以将其理解为数组。**可变参数通常声明在形参列表中的最后位置**,如果不声明在最后位置,那么可变参数后面的其他参数都需要通过命名参数的形式进行传递。比如下面的案例:
~~~
fun sum(vararg number: Int):Int{
var count = 0
for (i in number){
count += i
}
return count
}
fun main() {
println(sum())
println(sum(1, 2, 3, 4, 5, 6, 7, 8, 9))
}
~~~
结果为:
```
0
45
```
# 2. 局部函数
在`Kotlin`中支持函数的嵌套,其用法类似在`Python`中的用法。比如下面的案例:
~~~
fun sum(vararg number: Int):Int{
fun localSum(a: Int, b: Int) = a + b
var count = 0
for (i in number){
count = localSum(count, i)
}
return count
}
~~~
# 3. 扩展函数
扩展函数也就是在原本类的基础上增加一些新的方法。比如下面的案例:
~~~
fun String.doSomething(count: Int = 1): String{
return this.repeat(count)
}
fun Any.showInfo(): Any{
println(this)
return this;
}
fun main() {
"abc".showInfo()
"abc".doSomething(2).showInfo()
}
~~~
结果:
```
abc
abcabc
```
# 4. 当二个参数为函数
比如下面的案例:
~~~
fun doTest(data: Int?, other: (a: String) -> String): String{
return other(data.toString())
}
fun main() {
// 将第二个函数参数作为最后的括号内的表达式
val doTest = doTest(123) { it + "3" }
println(doTest)
}
~~~
结果:
```
1233
```
- Kotlin语言基础
- Kotlin的简介
- Kotlin的变量和常见数据类型
- Kotlin的区间
- Kotlin的位运算
- Kotlin的容器
- Kotlin类型检查
- Kotlin的空值处理
- Kotlin的函数
- Kotlin的类
- Kotlin的委托
- Kotlin的延迟加载
- Kotlin的异常
- Kotlin的Lambda表达式
- Kotlin的高阶函数
- Kotlin的标准库中的高阶函数
- Kotlin的泛型
- Kotlin的表达式
- Kotlin的解构
- Kotlin的运算符重载
- Kotlin语言中级
- Kotlin的扩展函数
- Kotlin的扩展属性
- Kotlin的infix关键字
- Kotlin的DSL
- Kotlin的一些注解(和Java互调用)
- Kotlin的lateinit和by lazy
- Kotlin的反射
- Kotlin的匿名接口
- 安卓中的Kotlin
- 数据库操作Room