Lambda表達式實例演練:
繼續先來編寫一些Lambda表達式相關的代碼:
接下來想從上面的字符串數組中找到帶有"h"的字符串並打印出來:
如果學習了Java8的Lambda表達式,上面這程序真的是so easy,繼續更換條件,找到字符串長度大於4的字會串並打印,依葫蘆畫瓢:
接下來再來新需求:找出包含不區分大小寫字母"d"的字符串,然后將匹配的字符串以大寫進行輸出,如下:
Lambda表達式返回值:
在默認情況下,Lambda表達式中最后一個表達式的值會隱式作為該Lambda表達式的返回值,我們可以通過全限定的return語法來顯示從Lambda表達式返回值。下面用代碼來說明下:
解決的辦法就是:
接着還可以這樣寫:
它就是對應於“我們可以通過全限定的return語法來顯示從Lambda表達式返回值”。如果這樣寫就會報錯:
其實指的是這個意思,應該這樣寫:
當然也可以不用return啦:
匿名函數【了解既可,比較繁瑣】:
下面咱們定義一個匿名函數:
當然如果放在main()方法外肯定就不行了:
其中匿名函數也可以這樣寫:
那對於一個函數木有名字如何使用呢,其實一般只能用Lambda表達式來使用它,下面來看一下:
其實還可以改為匿名函數的形式,如下:
閉包:
我們知道JavaScript中閉包是很重要的概念,那在Koltin中有啥作用呢?下面看代碼:
這個代碼在Java中是不被允許的,很顯然在Kotlin是在Lambda表達式中來訪問外層作用域的變量,這就是閉包。