Ruby DSL与普通API的区别

jrh*_*cks 7 ruby dsl design-patterns

Ruby DSL的一些定义特征是什么,它将它与常规API分开?

Ada*_*tek 11

当您使用API​​时,您将以强制方式实例化对象并调用方法.另一方面,良好的DSL应该是声明性的,表示问题域中的规则和关系,而不是要执行的指令.此外,理想情况下,DSL应该是非程序员(API不是这种情况)的可读性和可修改性.

另请注意内部和外部DSL之间的区别.

  • 内部域特定语言嵌入在编程语言(例如Ruby)中.它易于实现,但DSL的结构取决于它所嵌入的父语言.
  • 外部域特定语言是一种单独的语言,在设计时考虑了特定的域.它在语法方面为您提供了更大的灵活性,但您必须实现代码来解释它.它也更安全,因为编辑域规则的人无法访问母语的所有功能.