`
bd7lx
  • 浏览: 201908 次
社区版块
存档分类
最新评论

Ruby Metaprogramming 技巧

阅读更多
Ola 对下列话题, 进行了代码实例说明, 面铺得够开:

singleton classes, Domain Specific Languages, dynamic class generation, using method_missing, method dispatching using patterns, method replacement, null object refactoring, eval, instance variable introspection, procs and blocks, and eval bindings.

随便弯腰捡起来几个, 就是宝贝

http://ola-bini.blogspot.com/2006/09/ruby-metaprogramming-techniques.html



Metaprogramming最正宗的解释就是维基百科的学术化解答:

http://en.wikipedia.org/wiki/Metaprogramming_(programming)

但是PogaPress的简单化理解并不庸俗-metaprogramming 或著叫做中介編程

引用
簡單的說呢 就是寫一個程式讓他自己會去寫程式

什麼意思呢? 請看下面的例子:
....

看出來了嗎? eval這個函式接受了一個字串,並且叫ruby把這個字串當做一段程式碼來編譯。

也達到了metaprogramming的意義 動態的產生程式。



http://poga.wordpress.com/2006/06/19/ruby%e7%9a%84eval%e5%87%bd%e5%bc%8f-%e6%9c%80%e7%b0%a1%e5%96%ae%e7%9a%84metaprogramming/

contagious也來講一下 Ruby 的 Meta programming 了..

引用
Metaprogramming 就是去 programing 你的 programing

把你的 programming Language 特化成專門對你要處理的 Domain 的語言
( Domain Specifi Language),然後再用這種語言去處理你的問題。

最簡單的 Metaprogramming in Ruby,就是 attr_reader, attr_writer, attr_accessor。

在 Ruby 裡所有的 instance variable 都是必須用 getter 和 setter 來存取。attr_xxxx 就是用來生成這些 getter 和 setter 的。

 


http://www.javaworld.com.tw/jute/post/view?bid=14&id=146712&sty=3

基于Ruby的元编程技术

http://www.rubychina.org/viewthread.php?tid=124&extra=page%3D1

基于Ruby的元编程技术(附源代码)

http://www.rubychina.org/viewthread.php?tid=125&extra=page%3D1

Java 技术之外的轻量级开发

Bruce Tate 比较了java和ruby在元编程上的优劣:

http://doc.zoomquiet.org/data/20051109094030/

引用


元编程(Metaprogramming),即写程序的程序,是一个功能强大的概念。您已经看过 Java 语言的两个例子:

    * 在 Hibernate 中,元编程以字节码增强和反射机制来给对象增加持久性,而不迫使您写 SQL 查询。
    * 在 Spring 中,元编程允许给传统的 Java 对象(POJO)增加服务,而不会使它们变得凌乱。

事实上,Java 社区花费越来越多的时间在元编程上面,力求提供更好的服务透明性,但对元编程来说,Java 编程语言并不是一种特别好的语言。在其他语言中,元编程甚至更加重要。在 Ruby on Rails 框架成长的背后,Ruby 提供了爆炸性的力量。Rails 的革新已经横扫了这个产业,因为元编程允许框架用户通过非常少的工作建立令人难以置信的功能。该框架使用命名惯例、智能缺省和元编程来找到一个关系数据库表格的内容,然后动态地建立一个模型,在这个模型中对每个数据库列都有一个属性。这个过程发生在运行时,因此数据库模式的更改能够在用户界面得到反映,如果您希望如此的话。

如同在 Java 语言中一样,您可以找到元编程框架来处理持久性、事务和 XML。事实上,如您所见,在本系列的前三篇中,越来越多的 Java 开发人员在寻找提供更好的透明性的工具。当然,为了这样做,编码人员必须在 Java 的本来目的之外伸展 Java 语言。为了得到更好的透明性,需要使用一些技术,比如代码生成、字节码增强、代理、拦截器、反射和面向方面的编程(AQP)。当创建更加复杂的企业级应用程序时,像 Spring、Hibernate、JBoss 应用程序服务器和 HiveMind 之类的框架越来越多地使用这些技术来提供更好的透明性。

通过提供更好的反射和类的开放结构,Lisp、Python、Ruby 和 Smalltalk 等语言都使透明性的实现更加容易。让我们看看 Ruby 的两个例子。



Wikipedia对Meta的解释:

Meta (Greek: μετά = "after", "about," "beyond"), 是希腊语,英文中常用的
前缀, used to indicate a concept which is an abstraction from another concept, used to analyze the latter.

For example 形而上学 "metaphysics" refers to things beyond physics, and "meta language" 元语言
refers to a type of language or system which describes language.
分享到:
评论

相关推荐

    Metaprogramming.Ruby

    ### Metaprogramming Ruby:掌握如专业人士般的编程技巧 #### 一、引言 《Metaprogramming Ruby: Programming Like the Ruby Pros》是一本深入探讨Ruby元编程技术的专业书籍,作者Paolo Perrotta通过丰富的实例和...

    Metaprogramming Ruby 2nd Edition ruby元编程

    ### Metaprogramming Ruby 2nd Edition:深入理解Ruby元编程 #### 一、书籍简介与价值 《Metaprogramming Ruby 2nd Edition》是一本深入探讨Ruby语言元编程特性的经典之作。本书不仅适合那些希望深入了解Ruby内部...

    Ruby元编程技术详解(Ruby Metaprogramming techniques)

    以上就是Ruby元编程的一些关键技术和技巧,它们提供了强大的能力来创建灵活、可扩展的代码,但同时也需要谨慎使用,以避免代码的复杂性和难以理解性。在实际开发中,合理利用元编程可以提升代码的表达力和效率,但...

    Metaprogramming Ruby

    ### Metaprogramming Ruby:深入理解动态编程的力量 #### 标题解读 “Metaprogramming Ruby”这一标题明确地指出了本书的核心内容——通过元编程技术深入探索Ruby语言的独特魅力。元编程(Metaprogramming)是一种...

    Metaprogramming ruby

    《Metaprogramming Ruby》是一本专注于Ruby编程语言元编程技术的书籍,由Paolo Perrotta撰写。...这本书深入探讨了Ruby元编程的各种技巧和最佳实践,对于想要提升Ruby编程技艺的人来说,是一本不可或缺的参考书。

    ruby元编程.pdf

    《Metaprogramming Ruby》这本书深入探讨了Ruby的元编程技术,并教授如何利用这些技术编写更精练、更优良的代码。在本书中,读者会了解到以下关键知识点: 1. Ruby对象模型:Ruby中的每个值都是一个对象,每个对象...

    ruby test document

    书中提供了直接的解决方案,同时也解释了为什么这些解决方案是好的,这种教学方式让读者能够从中学习到新技巧和方法,即便对那些已经拥有数年Ruby经验的开发者也是如此。 文档还提到了一些业界专家对《The Ruby Way...

    Ruby程序设计资料大全

    Ruby的核心特性包括块(Blocks)、闭包(Closures)、元编程(Metaprogramming)和面向对象编程(OOP)。通过元编程,开发者可以修改或扩展语言本身的行为,这在其他语言中是不常见的。 2. **Ruby 1.9系列的改进**...

    ruby for rails

    6. 可能还包括异常处理、函数式编程元素(如Proc和Lambda)、元编程(Metaprogramming)等高级话题,这些内容能够帮助开发者更好地理解和利用Ruby的灵活性。 通过学习《Ruby for Rails》,开发者不仅能掌握Ruby语言...

    ruby-adventure

    "ruby-adventure"项目显然是一个围绕Ruby语言的学习资源或者代码示例集合,旨在帮助初学者或有一定经验的开发者深入理解Ruby的核心特性和实践技巧。 在Ruby的世界里,冒险意味着探索这个语言的无限可能。让我们一起...

    metaprogramming_introduction:一篇以源代码形式介绍Ruby元编程基础知识的文章-Form source code

    Ruby元编程是编程的一种高级技巧,它允许程序在运行时检查、修改或创建其他程序。元编程赋予了语言更高的灵活性,使开发者能够构建更加动态和自定义的代码。在这个介绍中,我们将深入探讨Ruby元编程的基础知识,通过...

    Ruby学校第23课

    在Ruby学校第23课中,我们将深入学习Ruby编程语言的关键概念和实践技巧。Ruby是一种面向对象的、动态类型的编程语言,以其简洁的语法和强大的功能深受开发者喜爱。这节课将涵盖类、模块、继承、方法重写以及元编程等...

    week4_day2

    了解闭包的原理及其在函数式编程中的应用,是提升Ruby编程技巧的重要一步。 6. **元编程(Metaprogramming)**:Ruby允许在运行时动态地修改和创建代码,这是其强大的特性之一。通过元编程,你可以自定义类的行为,...

    W5D4

    6. **元编程(Metaprogramming)**:Ruby提供了强大的元编程能力,允许在运行时修改和创建代码。这包括但不限于定义方法、修改类结构等。 7. **标准库与Gem**:Ruby拥有丰富的标准库,同时有一个庞大的第三方库生态...

    LSExersises

    通过解决这些练习,你可以逐步掌握Ruby编程的基础和进阶技巧。每完成一个练习,都意味着你在Ruby编程的道路上前进了一步。同时,查阅Ruby文档,参与在线社区的讨论,以及阅读其他人的代码,都是提升编程能力的有效...

    5xruby

    在“5xruby”项目中,我们可能能够找到关于如何优化Ruby代码以提高性能的技巧,或者是一系列教程,教导如何高效地结合HTML和Ruby进行Web开发。可能包含的内容有:代码示例、解释、测试用例、甚至是一个交互式的Web...

    how-to-avoid-conditional-through-concretion:因为条件使代码变得糟糕

    观看这些视频可以帮助学习者更深入地理解 Ruby 语言和 Rails 框架的最佳实践,并提供关于如何优化代码的实用技巧。 总结起来,避免条件语句通过具体化是提升 Ruby 代码质量的关键策略之一。通过多态性、封装和元...

    launch_school

    在"launch_school"中,我们很可能会看到Ruby的许多特性被充分利用,例如块(blocks)、元编程(metaprogramming)以及Rails框架中的DSL(领域特定语言)。 Rails是Ruby的一个流行Web开发框架,它遵循MVC(模型-视图...

    programming_crystal:本书中的代码:Programming Crystal(PragProg 2017-18)

    通过这些代码,读者能够更加直观地了解Crystal语言的实际应用和编程技巧。 例如,目录中的`io`子目录可能包含关于输入/输出操作的示例,如读取文件、写入文件、处理标准输入/输出等。`concurrency`目录则可能展示了...

Global site tag (gtag.js) - Google Analytics