这篇文章中,采用了对to_proc hack的方式实现了一种更加自然语言的方式来编程,例如:
ruby 代码
- File.read("/etc/passwd").split.sort_by &it.split(":")[2]
- User.find(:all).map &its.contacts.map(&its.last_name.capitalize)
hack的过程,让我们来看下面的代码:
ruby 代码
- module Kernel
- protected
- def it() It.new end
- alias its it
- end
-
- class It
-
- undef_method(*(instance_methods - %w*__id__ __send__*))
-
- def initialize
- @methods = []
- end
-
- def method_missing(*args, &block)
- @methods << [args, block] unless args == [:respond_to?, :to_proc]
- self
- end
-
- def to_proc
- lambda do |obj|
- @methods.inject(obj) do |current,(args,block)|
- current.send(*args, &block)
- end
- end
- end
- end
可以看到,作者主要利用了method_missing来实现他的小把戏,重写了to_proc来动态生成Proc对象,生成了一个动态的调用链。很酷。
要是愿意,我们也可以在Kernel中定义更多的alias,譬如he,his,she,her,这样,可以实现类似于
ruby 代码
- User.find(:all).collect &his.name.collect &its.firstname.capitalize
这样非常口语化的代码
分享到:
相关推荐
proc学习proc学习proc学习proc学习proc学习proc学习
4实验步骤4.1查看proc目录,了解proc目录结构,并查看部分系统信息步骤1:cd /proc进入proc目录步骤2:ls 整体查看proc目录结构图 2
Proc sql beyond the basic using sas
proc文件系统讲解,非常详细。 1 收集系统信息 1.0 proc文件系统概览 1.1 进程相关信息子目录 1.2 内核数据 1.3 IDE接口信息 /proc/ide 1.4 网络统计信息 /proc/net 1.5 SCSI接口信息 /proc/scsi 1.6 并行端口信息 /...
proc 文件系统 proc 文件系统 proc 文件系统 proc 文件系统 proc 文件系统
Proc开发文档
proc的入门学习材料,PROC学习文档,该文档为chm格式,是学习proc的入门资料
proc.frm proc.MYD proc.MYI
oracle proc 经典教程
PROC简介 3. 宿主变量与指示变量 4. 嵌入SQL语句
该书详细介绍了sas中的sql语言,不仅适合初学者学习sas,也可以帮助开阔高手提高自己编程的思路。
知道proc的可以看看。
proc interface for the dasd driver.
ProC Precompiler
proc c的程序概述 什么是proc c proc c程序设计的基础知识
proc编程,makefile编写,显出一个人的在proc下编程的能力,需要好好的掌握利用
原版的oracle proc开发手册,英文书籍。 This chapter introduces you to the Pro*C/C Precompiler. You look at its role in developing application programs that manipulate Oracle data and find out what it ...
嵌入式SQL,数据库,PROC,数据库编程
提供Oracle ProC程序的开发,详尽的介绍Proc的开发过程
PROC编程基础,有实例讲解,很适合初学者阅读