官术网_书友最值得收藏!

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) 
      } 
    }
主站蜘蛛池模板: 湾仔区| 汝州市| 宜宾市| 建德市| 高安市| 五常市| 弥渡县| 内黄县| 丰原市| 永平县| 日照市| 北票市| 深水埗区| 湖南省| 布尔津县| 闽侯县| 宣威市| 金山区| 东莞市| 泰兴市| 陆河县| 大厂| 临颍县| 黄龙县| 苏尼特左旗| 岑巩县| 潞城市| 罗源县| 松溪县| 麻栗坡县| 广德县| 海阳市| 阜阳市| 永定县| 仪征市| 嫩江县| 新干县| 来凤县| 屏南县| 青浦区| 化隆|