`

Ruby 动态特性鉴赏

阅读更多

以下代码与代码学习来自<Ruby Best Practives>,主要描述了一幅生动的Ruby语言动态特性使用场景。

#!/usr/bin/env ruby
#
# encoding: utf-8
#

# Base module NativeCampingRoutes
module NativeCampingRoutes

    # This is a convenient way to make instance methods into class methods.
    # And you can use this method to make a singleton.
    # http://ozmm.org/posts/singin_singletons.html
    # 将成员对象方法上升为类方法
    extend self

    def R(url)
        route_lookup = routes
        # Get a class-object
        klass = Class.new

        # Modify the meta-class-object(klass)
        # Extend the modules' methods to klass
        meta = class << klass; self; end


        #meta class, overwrite the define_method
        #The following block will be called by Class.instance_eval
        meta.send(:define_method, :inherited) do |base|
            raise "Already defined" if route_lookup[url]
            route_lookup[url] = base
        end

        klass
    end

    def routes
        @routes ||= {}
    end

    def process(url, params={})
        routes[url].new.get(params)
    end
end

module NativeCampingRoutes

    #R '/hello'
    #   will create a class-object which has been overwrited the define_method
    class Hello < R '/hello'
        #This will be invoked by overwrited method(define_method)
        def get(params)
            puts "hello #{params[:name]}"
        end
    end
    class Goodbye < R '/goodbye'
        def get(params)
            puts "goodbye #{params[:name]}"
        end
    end
end

NativeCampingRoutes.process('/hello',:name=>'greg')
NativeCampingRoutes.process('/goodbye',:name=>'joe')

 

分享到:
评论

相关推荐

    Ruby动态特性详细介绍

    在ruby代码中,其实我们一直都在进行元编程,虽然可能只是一句非常简单的代码,比如说,在“”中嵌入一个表达式,这就是元编程。毕竟,嵌入的的表达式并非真正的代码,它只是一个字符串,但是ruby却可以将它转换成...

    Ruby动态编程对象编程Ruby动态编程对象编程Ruby动态编程对象编程

    ### Ruby动态编程语言的核心知识点 #### 一、Ruby的特点与优势 **1. 简洁而优雅** - **设计哲学:“最小意外原则”** - Ruby的设计理念旨在减少不必要的复杂性和冗余,使得代码更加直观易懂。 - **简洁的语法** ...

    ruby教程.rar

    ruby 1.6 特性 ruby 1.7 特性 ruby 1.8 特性 1.6.8到1.8.0的变更点(总结) ruby 1.9 特性 obsolete 对应DOSISH 附录 疑似BNF的Ruby语法 Ruby术语集 Ruby的运行平台 pack模板字符串 sprintf格式 Marshal...

    Ruby动态编程语言v2.6.3

    Ruby是一种跨平台、面向对象的动态类型编程语言。Ruby 体现了表达的一致性和简单性,它不仅是一门编程语言,更是表达想法的一种简练方式。 Ruby 是一个注重均衡的语言,它的发明者松本行弘(Yukihiro “Matz” ...

    Ruby的语法和语言特性总结

    Ruby是一种高级的、动态类型的编程语言,它的设计哲学强调简洁性和表达性。在Ruby中,一切都是对象,这使得它成为一种纯面向对象的语言。下面我们将深入探讨Ruby的语法和语言特性,包括基础语法、编程模型、流程控制...

    Ruby Ruby Ruby Ruby Ruby Ruby

    Ruby Ruby Ruby Ruby Ruby Ruby

    Ruby-rubybuild编译和安装Ruby

    Ruby是一种动态、开源的编程语言,以其简洁、优雅的语法和强大的元编程能力著称。在Ruby开发中,为了管理不同版本的Ruby环境,我们常常会使用到`rbenv`和`ruby-build`这两个工具。本文将详细介绍如何使用`ruby-build...

    Ruby 编程语言的书籍

    3. **动态编程技巧**:通过具体示例展示如何利用Ruby的动态特性编写自修改程序,提升代码的灵活性和可扩展性。 4. **轻量级多任务**:介绍如何使用Fiber和Thread来实现并发编程,提高程序的执行效率。 5. **异常...

    Ruby资源ruby-v3.1.1.zip

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。本资源“ruby-v3.1.1.zip”包含了Ruby的最新版本3.1.1,这是一个重要的里程碑,因为它引入了新特性、性能优化以及对旧...

    ruby中英文api

    在学习这些文档时,重要的是理解和掌握Ruby的核心理念,即“代码应该是可读的”,这意味着应尽量保持代码简洁,避免冗余,并利用Ruby的动态特性来提高开发效率。此外,熟悉Ruby的Gem生态系统也非常重要,因为Gem是...

    ruby2ruby.zip

    ruby2ruby 提供一些用来根据 RubyParser 兼容的 Sexps 轻松生成纯 Ruby 代码的方法。可在 Ruby 中轻松实现动态语言处理。 标签:ruby2ruby

    Ruby完全自学手册

    2. 动态类型,变量在使用时无需声明其类型。 3. 高度可扩展,可以通过编写扩展库来增加Ruby的功能。 4. 完备的元编程能力,允许开发者在运行时修改程序的行为。 5. 开源,遵循GPL许可证发布,有着庞大的开源社区支持...

    ruby(前途大好的ruby+rains)

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。它由日本人松本行弘(Yukihiro Matsumoto)在1995年设计并开发,旨在提高程序员的生产力,降低代码的复杂性。Ruby的哲学...

    Ruby编程Ruby Programming

    这本面向初学者和高级读者的指南旨在全面介绍Ruby编程语言的基础及其高级特性,因此我们将从多个角度来解析这些内容。 ### 一、Ruby编程语言简介 #### 1.1 Ruby语言的历史与发展 Ruby是一种动态、面向对象的脚本...

    ruby DBI ruby DBI ruby DBI

    ruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ...

    Ruby-一个Ruby的例子

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。在这个"Ruby-一个Ruby的例子"中,我们将探讨Ruby的基础知识,以及如何通过具体的代码示例来理解其核心特性。 首先,...

    From Java to Ruby

    Ruby是一种灵活、简洁且富有表现力的编程语言,它提倡元编程和代码简洁性,与Java的面向对象特性有所不同。 首先,我们要理解Java和Ruby在面向对象编程(OOP)上的差异。Java的OOP体系严谨,类定义严格,而Ruby则...

    《Ruby元编程》PDF版本下载.txt

    元编程技术广泛应用于多种编程语言中,其中Ruby因其灵活的语言特性和动态特性而成为元编程的理想选择之一。 #### 1.2 Ruby中的元编程特点 - **动态性**:Ruby是一种动态类型语言,这意味着可以在运行时修改类和对象...

    Ruby工具 windows 环境

    Ruby是一种动态类型的语言,它强调代码的可读性和简洁性。其语法设计深受Perl和Smalltalk的影响,同时引入了自定义块和闭包等概念,使得编写复杂的逻辑变得简单。Ruby支持面向对象编程,类、对象、继承、多态等特性...

Global site tag (gtag.js) - Google Analytics