- 匿名函数
- 具名函数::fun_name
- 命名参数
- 包级函数
- Lambda表达式:{[参数列表] -> [函数体,最后一行是返回值]}
- 如果函数参数的最后一个参数是Lambda表达式,可以把它移到()的外边,例如(){};如果()中什么也没有,可以把()删掉;如果传入的函数跟Lambda表达式是一样的,可使用::fun_name(函数引用)简化;跳出表达式,
- return标签 ForEach@
- 函数类型
- () invoke()
- 扩展方法,有一个默认参数为调用该方法的实例
- 具名参数
- 默认参数
- 单表达式可以省略花括号,在=号后指定代码体即可
- 函数作用域:顶层函数、局部函数
- 内联函数
- Unit ==> void
args.forEach({print(it)})
args.forEach(){print(it)}
args.forEach{print(it)}
args.forEach(::print)
fun(x: Int, y: Int): Int = x + y
fun(x: Int, y: Int): Int {
ints.filter(fun(item) = item > 0)
fun main(vararg args: String) {
// for (arg in args){
// println(arg)
// }
val list = arrayListOf(1,3,4,5)
hello(3.0, *array) // 伸展(spread)操作符*,只能展开数组
}
fun hello(double: Double, vararg ints: Int, string: String = "Hello"){
println(double)
ints.forEach(::println)
}