这篇文章中,采用了对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
这样非常口语化的代码
分享到:
相关推荐
【标题】:“09 定制生成proc文件1”探讨 【内容】: Proc文件系统在Linux中扮演着至关重要的角色,它是一个虚拟文件系统,主要用于提供内核信息的接口和用户态与内核态之间的交互。通过Proc文件系统,我们可以获取...
/proc文件系统是Linux操作系统中一个非常关键的组成部分,它为用户空间提供了一个接口,以便于访问和操作内核的状态及进程信息。由于/proc不是一个实际存在于硬盘上的文件系统,而是存在于内存中,因此它被称为虚拟...
很抱歉,根据您提供的信息,"proc.rar" 可能是一个重复或错误的输入,没有提供足够的具体细节来生成一篇超过1000字的文章。通常,"proc" 在IT领域指的是“进程”,在Linux或Unix系统中,"/proc" 是一个虚拟文件系统...
Proc文件系统是Linux操作系统中的一个虚拟文件系统,它并不存储在硬盘上,而是由内核动态生成并维护。Proc文件系统的主要作用是为用户提供了一个接口,通过读写Proc目录下的文件来获取或修改内核状态和进程信息。...
在SAS环境中,PROC语句提供了丰富的统计分析、数据转换、报告生成等功能,是SAS用户日常工作中不可或缺的一部分。本简明教程将深入探讨PROC的基本概念、常用PROC过程以及它们在实际工作中的应用。 一、PROC的基本...
本篇文章将围绕"PROC学习文档"这一主题,深入探讨PROC文件系统及其相关知识。 首先,PROC文件系统不是一个实际存储数据的地方,而是内核与用户空间交互的一个接口,用于获取和修改内核的状态。它的主要目录和文件...
Oracle ProC 是Oracle数据库提供的一种集成的C语言接口,它允许开发者使用C语言来编写数据库相关的应用程序,同时利用Oracle数据库的高效性能和特性。ProC结合了C语言的强大功能和Oracle数据库的高级特性,如PL/SQL...
MySQL数据库中的`proc`表是存储过程和函数的元数据表,它包含了关于用户自定义的存储过程和函数的信息。这个表在MySQL的系统数据库`mysql`中,用于记录所有数据库实例上的这些对象的详细信息。`proc.frm`, `proc.MYD...
PROC Tabulate 是 SAS 中的一种强大的报表工具,用于生成复杂的统计报表。下面是对 PROC Tabulate 的总结,包括基本概念、语法和实例。 基本概念 PROC Tabulate 的主要目的是生成统计报表,报表中的数据可以来自于...
不同于传统的文件系统,Proc文件系统并不存储在磁盘上,而是在内存中动态生成,因此它可以提供最新的系统状态和信息。 **1.1 进程相关信息子目录** Proc文件系统中包含了与进程相关的各种信息,每个运行中的进程都...
Proc 文件系统是 Linux 系统中一种特殊的文件系统,它不占用磁盘空间,也不需要磁盘存储,它的所有内容都是实时生成的。 Proc 文件系统的主要目的是提供一个统一的接口来访问系统硬件和进程信息,使得用户和应用...
在Linux系统中,`/proc`是一个非常特殊的文件系统,它并不存储于硬盘上,而是由内核动态生成,提供了一个观察和控制操作系统内核的窗口。本教程将重点讲解如何在C语言环境下利用`/proc`进行程序设计,帮助开发者获取...
例如,如果我们要输出一个名为 `mydata` 的数据集,可以使用以下代码:`proc print data=mydata; run;` 3. 自定义输出格式:Proc Print 还可以自定义输出格式,例如,可以使用 `format` 语句指定变量的输出格式。...
其中,PROC LCA(Latent Class Analysis)是SAS中的一个过程,用于执行潜在类别分析,这是一种统计方法,旨在从观测数据中识别出隐藏的、不可见的类别结构。PROC LCA尤其适用于处理多分类变量,它可以帮助研究人员...
这相当于依次进行预处理、编译和链接操作,最后生成名为test的可执行程序。 通过以上学习,你不仅能够理解Linux proc文件系统并查询CPU、内核版本等信息,还能熟练进行C程序的编辑、编译、运行以及使用GDB进行调试...
Oracle的PROC,全称为Pro*C或ProC Precompiler,是一种集成在Oracle开发工具中的C语言扩展,用于编写高效能的数据库应用。它允许开发者在C或C++代码中嵌入SQL和PL/SQL语句,使得能够直接与Oracle数据库进行交互,...
`/proc`目录下包含了大量以文件形式存在的数据,这些文件其实并非传统的磁盘文件,而是由内核动态生成的虚拟文件。通过对`/proc`目录下的文件进行读取和写入,用户可以获取到系统运行时的实时信息,如进程状态、内存...
Oracle Proc,全称为Oracle Pre-Compiler,是一种将PL/SQL代码嵌入到C或FORTRAN等高级语言中的工具。Proc编程允许开发人员在C或FORTRAN程序中直接编写和执行Oracle数据库的PL/SQL代码,提高了应用程序的性能和效率。...
《Proc Tabulate by Example》一书由Lauren E. Haworth撰写,主要聚焦于SAS软件中的Proc Tabulate过程,提供了详细的实例与讲解,旨在帮助读者深入理解和掌握这一功能强大的统计报表工具。以下是对该书内容及SAS ...