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

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

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

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

谢谢。

【问题讨论】:

    标签: ruby dsl dsel


    【解决方案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,我的问题是他们在做什么? :-)。一般来说,问这个问题是没有意义的,但我对他们每个人在做什么很感兴趣(我不确定我的句子在语法上是否正确,但希望你明白:-))。跨度>
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多