我想知道Dart是否能像Groovy一样在运行时执行闭包并支持委托?请参考以下示例以更好地理解:在2小时内从头开始创建Groovy DSL。
我用Groovy编写了一个DSL,用于轻松定义MARC图书馆记录。我希望能够使用类似的Dart脚本,在程序中将定义调用绑定到委托类。
你可能会想:为什么不能用JSON来表达这个呢?使用这样的DSL,我可以做比表达数据更多的事情。因为它是嵌入式的,所以你可以在DSL中使用任何主语言(在这种情况下是Groovy)中有效的内容,例如for循环,如果必须定义相同的内容但只有不同的值,可以使用GString表达式,调用数据库,访问文件等。使用已定义的DSLD,IDE就像它一直是语言的一部分一样了解你的概念,它可以提供辅助工具。这非常具有表现力和直观性。
我用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)中有效的内容,例如for循环,如果必须定义相同的内容但只有不同的值,可以使用GString表达式,调用数据库,访问文件等。使用已定义的DSLD,IDE就像它一直是语言的一部分一样了解你的概念,它可以提供辅助工具。这非常具有表现力和直观性。
我正在寻找类似Dart的东西。