Ruby DSL 体验?

Posted

技术标签:

【中文标题】Ruby DSL 体验?【英文标题】:Ruby DSL experiences? 【发布时间】:2010-03-16 14:53:18 【问题描述】:

我对 Ruby 一无所知,但我对 DSL 很感兴趣。 DSL 似乎是您社区的一个流行词。

您是否真的出于自己的目的在 Ruby 中实现 DSL?如果是这样,它们的复杂程度和敬业度如何?

我在这里看到过question,但我对你的日常体验更感兴趣。

谢谢。

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案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

【讨论】:

【参考方案3】:

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

【讨论】:

Rails 是一个 DSL 并且是一个巨大的项目。工作正常。 :) 是的,我知道,但他问的是我们的经验,所以我说我不能推荐这个。 我的问题是知道 ruby​​ 开发者是否真的在使用这个特性。这是否成为实施 DSL 解决问题的一种反射? @LB,是的,ruby 开发人员经常使用它。 @banister,我的问题是他们在做什么? :-)。一般来说,问这个问题是没有意义的,但我对他们每个人在做什么很感兴趣(我不确定我的句子在语法上是否正确,但希望你明白:-))。跨度>

以上是关于Ruby DSL 体验?的主要内容,如果未能解决你的问题,请参考以下文章

Ruby讲座回顾 | 真实生活 真实体验

RUBY区第二次黑围裙体验日——天虹店

RUBY区黑围裙体验日—天虹店

也太害羞!温哥华网红Ruby亲身体验“隐藏版医美保养”?(高清多图)

Ruby 中的简单 DSL

用Kotlin构建神奇的DSL