DSL (领域特定语言)
Kotlin最让人激动人心的特性DSL,是一个类似于用自然语言话术去让程序执行,这样没有编程背景的人也可以参与到编程的体验当中,未来编程就会向第五代编程语言自然语言发展,因此Kotlin将来会取代第四代、第三代编程语言的。
DSL必有的两个前提
扩展函数
中缀表达式
例如:
fun main(args: Array<String>) {
var girlList = ArrayList<Girl>();
girlList.add(Girl("妹儿", "河南", 23, 168))
girlList.add(Girl("灵儿", "黑龙江", 25, 170))
girlList.add(Girl("小九", "吉林", 27, 180))
girlList.add(Girl("黑妹", "山东", 23, 190))
girlList.add(Girl("娟儿", "陕西", 23, 155))
girlList.add(Girl("小晴", "河南", 18, 155))
girlList.add(Girl("小花", "河南", 20, 179))
//调用
girlList 查找年龄大于20的姑娘 50
}
//自定义DSL,在List<Girl>集合中扩展出 “查找年龄大于20的姑娘”方法,方法里可直接调用集合的高阶函数
infix fun List<Girl>.查找年龄大于20的姑娘(age:Int){
filter{
it.age<20
}
}
函数用infix中缀表达式修饰调用的时候不用写 “.”参数不用写“()” 直接语句话就调用了,是不是很接近自然语言。
注意自定义DSL写法
中缀表达式 fun 集合.函数名(参数){ }
infix fun List<Girl>.查找年龄大于20的姑娘(age:Int){ }
网友评论