美文网首页
Kotlin 零基础学习 DSL 领域特定语言

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

作者: __素颜__ | 来源:发表于2019-02-01 17:59 被阅读45次

    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){ }

    相关文章

      网友评论

          本文标题:Kotlin 零基础学习 DSL 领域特定语言

          本文链接:https://www.haomeiwen.com/subject/muudsqtx.html