DSL是设计用来在某一领域完成特殊任务的语言,而不是一般目的的编程,DSL的指令集相对较窄
从某方面来看,Rails就像一个用Ruby写的DSL,它的领域是交互式数据库驱动的Web程序
对于如下代码
[code]
has_many :editions
[/code]
左边是一个动词,右边像一个配置
其实这是简单的Ruby方法调用,方法名为has_many,参数为一个Ruby symbol object
Rails经常让programming看起来像configuration,省略方法括号是Rails的习惯约束
Rails DSL很大程度上依赖于Ruby的元编程能力,比如[b]attr_reader :name[/b]为你自动生成实例变量@name和get方法
[url=http://www.iteye.com/topic/53750]Ruby元编程入门[/url]
[url=http://www.artima.com/rubycs/articles/ruby_as_dsl.html]使用Ruby创建DSL[/url]
从某方面来看,Rails就像一个用Ruby写的DSL,它的领域是交互式数据库驱动的Web程序
对于如下代码
[code]
has_many :editions
[/code]
左边是一个动词,右边像一个配置
其实这是简单的Ruby方法调用,方法名为has_many,参数为一个Ruby symbol object
Rails经常让programming看起来像configuration,省略方法括号是Rails的习惯约束
Rails DSL很大程度上依赖于Ruby的元编程能力,比如[b]attr_reader :name[/b]为你自动生成实例变量@name和get方法
[url=http://www.iteye.com/topic/53750]Ruby元编程入门[/url]
[url=http://www.artima.com/rubycs/articles/ruby_as_dsl.html]使用Ruby创建DSL[/url]