- Learn Kotlin Programming(Second Edition)
- Stephen Samuel Stefan Bocutiu
- 281字
- 2021-06-24 14:13:30
Function return
To return a value from a function, we use the return keyword with the value or expression we want to return:
fun addTwoNumbers(a: Int, b: Int): Int { return a + b }
Note that we specified the return value of the function. By default, return returns from the nearest enclosing function or anonymous function. So, in a nested function, this will return from the innermost function only:
fun largestNumber(a: Int, b: Int, c: Int): Int { fun largest(a: Int, b: Int): Int { if (a > b) return a else return b } return largest(largest(a, b), largest(b, c)) }
In this somewhat contrived example, the largest nested function returns only from itself. If the innermost function is an anonymous function, then that still counts for return purposes:
fun printLessThanTwo() { val list = listOf(1, 2, 3, 4) list.forEach(fun(x) { if (x < 2) println(x) else return }) println("This line will still execute") }
If we need to return a value from a closure, then we need to qualify the return with a label; otherwise, the return would be for the outer function. A label is just a string that ends with @:
fun printUntilStop() { val list = listOf("a", "b", "stop", "c") list.forEach stop@ { if (it == "stop") return@stop else println(it) } }
We don't need to specify the label, in which case an implicit label can be used. Implicit labels are the name of the function that accepted the closure. If a label is defined, then the implicit label is not generated:
fun printUntilStop() { val list = listOf("a", "b", "stop", "c") list.forEach { if (it == "stop") return@forEach else println(it) } }
- OpenStack Cloud Computing Cookbook(Third Edition)
- VMware View Security Essentials
- Modular Programming with Python
- Web Application Development with R Using Shiny(Second Edition)
- Data Analysis with IBM SPSS Statistics
- C程序設計案例教程
- Learn React with TypeScript 3
- INSTANT Passbook App Development for iOS How-to
- Java程序設計
- 程序設計基礎教程:C語言
- Learning Unity 2D Game Development by Example
- Nginx實戰:基于Lua語言的配置、開發與架構詳解
- 蘋果的產品設計之道:創建優秀產品、服務和用戶體驗的七個原則
- 持續輕量級Java EE開發:編寫可測試的代碼
- Julia 1.0 Programming Complete Reference Guide