当前位置:   article > 正文

Kotlin: ‘return‘ is not allowed here

Kotlin: ‘return‘ is not allowed here

 报错:以下函数的内部函数return语句报错

Kotlin: 'return' is not allowed here

  1. fun testReturn(summary: (String) -> String): String {
  2. var msg = summary("summary收到参数")
  3. println("test内部调用参数:=>结果是 :${msg}")
  4. val result: (Int) -> String = {
  5. if (it > 80) return "优秀的女子"
  6. println("不是优秀女子")
  7. "${it}不是优秀女子"
  8. }
  9. println(result(90))
  10. return "我是return终点"
  11. }
  12. fun main(){
  13. testReturn("我是小红")}

原因

  • Lambda 表达式中 return 需要 @ 标签
     这里特别注意 :
    在 Kotlin 中 , 在 lambda 表达式或匿名函数中使用 return 语句时 , 必须使用 return@label 语法来指定你要返回的标签 ;
    在 Kotlin 中 , return 语句默认是从最近的封闭函数返回的 , 而在 lambda 表达式中使用 return 时 , 它会尝试从包含它的函数返回 ;
     

解决:

result函数增加label标签,用于标记返回的位置

  1. val result: (Int) -> String = getreturn@{
  2. // 显式的return必须写上标志符
  3. if (it > 80) return@getreturn "优秀的女子"
  4. println("不是优秀女子")
  5. // 默认return也是返回给内部函数result
  6. "${it}不是优秀女子"
  7. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/576188
推荐阅读
相关标签
  

闽ICP备14008679号