ruby 元编程
2016-05-12 12:13
246 查看
一 对象模型
kernel Module
Kernel.private_instance_methods.grep(/^pr/)
private method
1 如果一个方法接收者不是你自己,一定要指定一个接收者
2 私有方法 只能指定一个隐含接收者(可调超类的私有方法)
类本身是Class类的对象。类的名字是个常量
Class<Module,模块和类的名字扮演目录角色,按树形结构组织
include Module时 M被插入到祖先链中,在该类的正上方
二 方法
obj.send(:method,arg) #动态派发 ojb.method(arg)
Module#define_method #动态方法 代替def
string#grep(){}
def method_missing(method,*args)
三 blocks
Kernel#local_variables() 跟踪绑定的名字
ruby作用域不像java/c#中嵌套 内部可以看到外面
类定义,模块定义,方法调用时 时关闭前一个作用域
instance_eval
instance_exec 可休参数
打包代码
proc lambda
&proc 代表一个代码块
proc中return 表示从定义的作用域中返回
lambda ruturn 表示中lambda中返回
kernel Module
Kernel.private_instance_methods.grep(/^pr/)
private method
1 如果一个方法接收者不是你自己,一定要指定一个接收者
2 私有方法 只能指定一个隐含接收者(可调超类的私有方法)
类本身是Class类的对象。类的名字是个常量
Class<Module,模块和类的名字扮演目录角色,按树形结构组织
include Module时 M被插入到祖先链中,在该类的正上方
二 方法
obj.send(:method,arg) #动态派发 ojb.method(arg)
Module#define_method #动态方法 代替def
string#grep(){}
def method_missing(method,*args)
puts “you called:#{method}(#{args.join(‘, ‘)}”
end三 blocks
Kernel#local_variables() 跟踪绑定的名字
ruby作用域不像java/c#中嵌套 内部可以看到外面
类定义,模块定义,方法调用时 时关闭前一个作用域
instance_eval
instance_exec 可休参数
打包代码
proc lambda
&proc 代表一个代码块
proc中return 表示从定义的作用域中返回
lambda ruturn 表示中lambda中返回
相关文章推荐
- ruby迭代器枚举器
- ruby环境sass编译中文出现Syntax error: Invalid GBK character错误解决方法
- TIOBE 2016年5月编程语言排行榜:Ruby排名创历史新高
- 如何在Mac OS X上安装 Ruby运行环境
- ruby 语法规则(syntax rules)
- ruby gem
- Ruby 元编程 第二版随笔(一)
- ruby安装时提示SSL证书错误
- Ruby文件操作
- Ruby学习: 全局变量 和常量
- Ruby学习: 类变量和类方法
- Ruby学习: 类的定义和实例变量
- Watir-webdriver使用手册
- TIOBE 2016年5月编程语言排行榜:Ruby 排名创历史新高
- windows下安装ruby和 rails的痛苦经历
- ruby Errors & Exceptions
- ruby Errors & Exceptions
- ruby Inheritance
- 使用深度搜索分析心理调查问卷的研究
- 小白在MAC安装ruby环境以及下载和安装CocoaPods