【发布时间】:2010-03-16 14:53:18
【问题描述】:
我对 Ruby 一无所知,但我对 DSL 很感兴趣。 DSL 似乎是您社区的一个流行词。
您是否真的出于自己的目的在 Ruby 中实现 DSL?如果是这样,它们的复杂程度和敬业度如何?
我在这里看到过question,但我对你的日常体验更感兴趣。
谢谢。
【问题讨论】:
我对 Ruby 一无所知,但我对 DSL 很感兴趣。 DSL 似乎是您社区的一个流行词。
您是否真的出于自己的目的在 Ruby 中实现 DSL?如果是这样,它们的复杂程度和敬业度如何?
我在这里看到过question,但我对你的日常体验更感兴趣。
谢谢。
【问题讨论】:
这是 Ruby DSL 的另一个示例,称为 Mail,它是用于发送电子邮件的 DSL:
mail = Mail.new do
to 'nicolas@test.lindsaar.net.au'
from 'Mikel Lindsaar <mikel@test.lindsaar.net.au>'
subject 'First multipart email sent with Mail'
end
【讨论】:
我自己在 Ruby 中编写 DSL 的经验非常有限,但我做了以下工作:
(1) 一个 L-System DSL:
Dragon = TexPlay::LSystem.new {
rule "F" => "F"
rule "X" => "X+YF+"
rule "Y" => "-FX-Y"
angle 90
atom "FX"
}
(2) 图像处理工具:
image.paint {
circle 20, 20, 15, :color => :red
rect 10, 20, 100, 100, :color => :green
pixel 40, 40, :color => :white
}
【讨论】:
它是 Ruby 的专长,可以让一切快速运行,但它可能会变得难以管理。我想说,对于中小型 DSL 项目,ruby 很棒。由于我没有在 Ruby 中创建任何大型 DSL 项目,因此我不能推荐它(对于更大的项目)。
【讨论】: