kotlin 中 lambda 表达式的 return 行为
kotlin 帶來了許多新的語法(糖?),同時也帶來了許多懵逼的地方,看 《kotlin 實戰》一書時就被各種 return 的行為搞懵逼了。
在 lambda 表達式中,如果沒有顯式的 return 語句,那么最后一個表達式就是返回的值。這一行為只有 lambda 表達式才有,常規方法和匿名方法都沒有,因為在 kotlin 中 lambda 是做為表達式的存在,表達式一定會有值。
那么如果在 lambda 中顯示返回值呢?上面的 foo 函數不是 inline 函數, lambda 是不能顯式
 return 的,文檔中叫做 non-local return 也就是結束 lambda 的調用。
如果把 foo 定義成 inline 函數,那么 lambda 可以顯式 return 了,不過 return 的是 foo 函數, 而且只能 return Unit,因為 return 的是 foo 函數,并且 foo 函數的定義就是沒有返回值。 
 從下面的代碼中可以看到并沒有輸出 "foo return",foo 函數返回了,并且 return 后面不能有其他值。這里看不到 Unit 的輸出。
那么 lambda 怎么顯示 return 呢?我并不要求表達式的值,只是想要結束調用而已。比如打印只 1..10 中的偶數。 
如果我們想結束 lambda 的調用,需要給 lambda 加上標簽,并用相同的標簽修飾 return。
總結
以上是生活随笔為你收集整理的kotlin 中 lambda 表达式的 return 行为的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 零元学Expression Blend
- 下一篇: Objective-C 和 Swift
