Kotlin 零基础学习 DSL 领域特定语言

DSL (领域特定语言)

Kotlin最让人激动人心的特性DSL,是一个类似于用自然语言话术去让程序执行,这样没有编程背景的人也可以参与到编程的体验当中,未来编程就会向第五代编程语言自然语言发展,因此Kotlin将来会取代第四代、第三代编程语言的。

DSL必有的两个前提
扩展函数
中缀表达式

例如:

fun main(args: Array) {

    var girlList = ArrayList();
    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集合中扩展出 “查找年龄大于20的姑娘”方法,方法里可直接调用集合的高阶函数
 infix fun List.查找年龄大于20的姑娘(age:Int){
    filter{
      it.age<20
    }
}

函数用infix中缀表达式修饰调用的时候不用写 “.”参数不用写“()” 直接语句话就调用了,是不是很接近自然语言。

注意自定义DSL写法

中缀表达式 fun 集合.函数名(参数){ }
infix fun List.查找年龄大于20的姑娘(age:Int){ }

你可能感兴趣的:(Kotlin 零基础学习 DSL 领域特定语言)