DSL(Domain Specific Language)是针对某一领域,具有受限表达性的一种计算机程序设计语言。
常用于聚焦指定的领域或问题,这就要求 DSL 具备强大的表现力,同时在使用起来要简单。由于其使用简单的特性,DSL 通常不会像 Java,C++等语言将其应用于一般性的编程任务。
对于 Groovy 来说,一个伟大的 DSL 产物就是新一代构建工具——Gradle,接下来让我们看下有哪些特性来支撑Groovy方便的编写DSL:
一、原理
1、闭包
官方定义是“Groovy中的闭包是一个开放,匿名的代码块,可以接受参数,返回值并分配给变量”
简而言之,他说一个匿名的代码块,可以接受参数,有返回值。在DSL中,一个DSL脚本就是一个闭包。
比如:
//执行一句话
{ printf 'Hello World' }
//闭包有默认参数it,且不用申明
{ println it }
//闭包有默认参数it,申明了也无所谓
{ it -> println it }
// name是自定义的参数名
{ name -> println name }
//多个参数的闭包
{ String x, int y ->