lambda

  1. /*
  2. function fn(a,b){
  3. return function(c){
  4. return a * b * c
  5. }
  6. }
  7. */
  8. // 普通的
  9. val fn: (Int, Int) -> Unit = { a, b ->
  10. println(a + b)
  11. }
  12. // 闭包, 省略返回值声明
  13. fun f(a: Int, b: Int) = { it: Int ->
  14. a * b * it
  15. }
  16. // 闭包, 带声明
  17. val fn2: (Int, Int) -> (Int) -> Int = { a, b ->
  18. { c ->
  19. a * b * c
  20. }
  21. }
  22. // 闭包, 带挂起
  23. val fn3: (Int, Int) -> suspend (Int) -> Int = { a, b ->
  24. { c ->
  25. delay(1000)
  26. a * b * c
  27. }
  28. }
  29. // 闭包, 指定return
  30. val fn4: (Int, Int) -> suspend (Int) -> Int = { a, b ->
  31. ret@{ c ->
  32. delay(1000)
  33. return@ret a * b * c
  34. }
  35. }