Kotlin领域特定语言(DSL)

一、DSL的概念 只在特定领域内使用的语言 例如: —HTML、Gradle、SQL等等特点: 计算机编程语言 具有语言的表达能力 有限的表达能力 关注某个特定的领域二、下面用DSL来写一个例子吧 需要下面五个类: 三、创建一个Node节点的接口package cn.kotliner.kotlin/** * @author:wangdong * @de...
摘要由CSDN通过智能技术生成

一、DSL的概念
只在特定领域内使用的语言
例如:
—HTML、Gradle、SQL等等

特点:
计算机编程语言
具有语言的表达能力
有限的表达能力
关注某个特定的领域

二、下面用DSL来写一个例子吧
需要下面五个类:
这里写图片描述

三、创建一个Node节点的接口

package cn.kotliner.kotlin

/**
 * @author:wangdong
 * @description:1.Node节点的接口
 */
interface Node {
    //每个节点都应该有一个render方法
    //例如对于HTML标签,它的render方法应该输出什么
    fun render(): String
}

四、写一个通用的Tag类,实现这个接口

package cn.kotliner.kotlin

/**
 * @author:wangdong
 * @description:2.通用的tag类
 */
/***
 * 实现了Node接口
 * Tag类需要Open,以便其他类继承
 */
open class Tag(val name: String): Node{

    //1.定义一个Node节点的list
    val children = ArrayList<Node>()
    //定一个表现属性的Map
    val properties = HashMap<String,String>()

    //定义一个String的扩展方法,参数是String
    operator fun String.invoke(value: String){
        properties[this] = value
    }

    //定义一个String加法的拓展
    operator fun String.unaryPlus(){
        children.add(StringNode(this))
    }

    //定义一个添加运算符
    operator fun plus(node: Node){
        children.add(node)
    }

    //定义一个String的扩展方法,参数是Tag.()<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值