我想知道Dart是否能够在运行时使用这样的委托支持来执行闭包,Groovy能够做到什么呢?请参阅此示例以更好地理解:一个从零开始的Groovy 2小时。
我有一个用Groovy编写的DSL,可以轻松地定义MARC库记录。我希望能够通过将定义调用绑定到程序中的委托类来本地处理类似的Dart脚本。
record {
leader "00000nam a2200000 u 4500"
controlfield "001", "LIB001"
controlfield "005", "20120311123453.0"
datafield("100") {
subfield "a", "Author of record"
}
datafield("245", "0") {
subfield "a", "Title of record"
}
}您可能会想:为什么这不能用JSON表示呢?有了这样一个DSL,我可以做的不仅仅是表达数据。因为它是嵌入式的,所以您可以在DSL中执行任何操作,这在宿主语言中是有效的(这里是Groovy)。如果您必须使用不同的值多次定义相同的东西,可以使用GString表达式、调用数据库、访问文件等,可以执行for循环。使用定义的DSLD,IDE知道您的概念,就像它始终是语言的一部分一样,它可以为您提供辅助工具。它具有很强的表现力和直觉。
对于Dart来说类似的事情就是我要找的东西。
发布于 2013-12-29 18:39:37
您应该查看sweet.js,它为JavaScript提供卫生的宏。您可以编写宏以接受所需的DSL。编译时,您将得到必须包含的JavaScript文件。然后您可以直接从JavaScript或Dart使用DSL。
https://stackoverflow.com/questions/20660527
复制相似问题