🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 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 ```