再来考虑下代码清单文件2-1的CountryTest类,这仍然算不上一种很好的方案。因为每增加一个需求,我们都需要在类中专门写一个新增的塞选方法。然而Shaw的需求很多都是临时性的,不需要被复用。Shaw觉得这样还是比较麻烦,他打算用匿名函数对程序做进一步的优化。
Kotlin支持在缺省函数名的情况下,直接定义一个函数。所以isBigEuropeanCountry方法我们可以直接定义为:
fun(country:Country):Boolean{
return country.continient =="EU"&&country.population >10000
}
于是,Shaw直接调用filterCountries,如代码清单2-2所示。
-------------------
contryApp.filterCountries(countries,fun(country:Country):Boolean{
return country.continient =="EU"&&country.population>100000
})
这一次我们甚至都不需要CountryTest这个类了,代码的简洁性又上了一层楼。Shaw开始意识到Kotlin这门语言的魅力,很快他发现还有一种语法可以让代码更简洁,这就是Lambda表达式。
网友评论