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 体验?的主要内容,如果未能解决你的问题,请参考以下文章