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