BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

文章:在Ruby中对字符串和block求解

| 作者 霍泰稳 关注 1 他的粉丝 发布于 2007年8月25日. 估计阅读时间: 1 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Jay Fields是ThoughtWorks的一位开发人员,总是在寻找令人兴奋的新技术,并愿意马上采用这些技术。。他以在业务自然语言方面的前沿工作而著称,在本文中他结合代码叙述了如何在Ruby的对事项领域特定语言的环境中使用eval、class_eval和instance_eval等方法。

本文通过代码展示了开始定义DSL所需的一些步骤。创建DSL是很有挑战性的工作,但同时会带来很多好处。通过DSL来表达业务规则,所带来的好处是可以在多种上下文中执行这些业务规则。如上述示例所展示的,通过在不同上下文中执行DSL,可以从同一个业务规则产生多种不同的行为。当业务规则随着时间推移而改变时,系统中所有引用该业务规则的构成部分都会随之发生变化。而对Ruby求解方法的利用,就是成功实现这种效果的关键。

本文中,作者深入浅出地提出来使用Ruby提供的多种求解方法,帮助我们创建简练、可读的代码。同时,这些求解方法也提供了创建诸如领域特定语言之类强大工具的能力。

阅读全文:在Ruby中对字符串和block求解

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

是天使也是魔鬼。 by Chen Jerome

EVAL正是如此的一种东西。是魔鬼是因为可以引发系统级的安全漏洞,是天使是因为没有这个东西Ruby就失去了很多的魅力。

------------------------------------------
[Ruby中文社区] - ruby-lang.org.cn

貌似这个地方是有错误的。 by haoxiang zhang

Select[:column1, :column2].from[:table1, :table2].where do
equal table1.id, table2.table1_id
end

怀疑此代码是否正确。 如果按下文所说, 这个地方不应该用do 。。。 end。 因为do。。。end包含的块是传递给select的,而不是where, 所以应该用花括号。

优先级的差别。

Re: 貌似这个地方是有错误的。 by haoxiang zhang

sorry, it is my fault.

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

3 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT