Ruby DSL体验?

时间:2010-03-16 14:53:19

标签: ruby dsl dsel

我对Ruby一无所知,但我对DSL非常感兴趣。 DSL似乎是社区的热门话题。

您是否真的为了自己的目的在Ruby中实现DSL?如果是这样,他们有多复杂和多么专注?

我在这里见过这个question,但我对你的日常生活更感兴趣。

感谢。

3 个答案:

答案 0 :(得分:3)

这是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

见这里:http://github.com/mikel/mail

答案 1 :(得分:2)

我在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
}

答案 2 :(得分:0)

它的Ruby专长,让一切工作变得非常快,但它可能变得难以管理。我想说,对于中小型DSL项目,ruby非常棒。由于我没有在Ruby中创建任何大型DSL项目,我不推荐它(对于更大的项目)。