首页 文章

内部DSL的Groovy vs Scala

提问于
浏览
12

我将为JVM创建一个内部DSL . 我看到Scala和Groovy是这项任务的最佳人选 . 我发现Groovy脚本不那么冗长,默认使用BigDecimal,而Scala有很好的类型推理系统 . 在内部DSL的背景下,这些语言之间的其他差异是什么?

EDIT: 最后我选择了Groovy,经过一年的DSL开发,它似乎是正确的选择:我可以从Groovy 2.0中的类型推断和静态类型中受益,并且在需要时仍然使用动态类型,方法/属性调度处理程序工作得很好, ASTTransforation允许我改变语言语义,eclipse的groovy插件和IDEA对Groovy DSL的开箱即用支持,并且DSL语法比Scala更简洁 . 虽然仍有一些改进空间,因为一些动态功能并不总是如我所料 .

3 回答

  • 3

    我没有在Scala中使用DSL的经验,但我可以说Groovy通过元对象协议的动态特性使其非常适合DSL . 我发现在检查Groovy中的DSL时,this series会有所帮助 . 您可能还想查看Martin Fowler's page,其中包含有关该主题的书籍的链接 .

  • 5

    我一直在使用DSL进行Scala测试 . 我认为你最终会在Scala中编写更多解释代码(类型转换等),但是一旦你有了没有理由你的DSL应该或多或少冗长 . 回报是(一旦IDE赶上)你将有代码完成,以帮助写入你的Scala DSL .

    Scala模式匹配在编写解释代码时也是一个巨大的胜利 .

  • 5

    1.8中增加了很多Groovy DSL goodness .

    Groovy是一个很好的起点 .

    看看Gradle . 这是一个用Groovy编写的构建工具,构建语言是DSL .

相关问题