Ruby元编程笔记一
来源:互联网 发布:禅道windows安装包 编辑:程序博客网 时间:2024/04/29 14:17
打开类
通过
class String def to_alphanumeric gsub /[^\w\s]/,'' endend
可以直接打开已有的类并给其添加方法,class关键字的核心任务是把你带入到类的上下文中,让你可以定义其中的方法。
如果方法名重合,那么会覆盖原来的方法,这称为“猴子补丁(Moneypatch)”。
对象和方法
class MyClass def my_method @v=1 endendobj = MyClass.newobj #=> <MyClass:0x007f8e42830838 @v=1> #obj作为一个实例对象包含一个实例变量@v和一个类MyClssobj.class #=>MyClassobj.my_methodobj.instance_variables #=>[:@v]obj.methods.grep(/my/) #=>[:my_method] MyClass.instance_methods(false) #=>[:my_method] MyClass.methods.grep(/my/) #=>[] #通过对比可以看出,my_method是MyClass的一个实例方法,只有当MyClass实例化后才能调用,MyClass类本身并没有这个方法。MyClass.class #=>Class#类也是对象,它包含一个叫Class的类。
类与模块
Class.superclass #=>Module#Class的超类是Module,Class实际就是一个增加了new(),allocate(),superclass()的Module,Class是Module的子类.#所有的类都最终继承于Object,Object继承于BasicObject
以Rake为例:
module Rake class Task #... #使用Rake::Task来拓展命名空间
关于常量:
module MyModule MyContent = "aaa" class MyClass MyContent = "bbb" endend #对于常量MyContent,也可以使用MyModule::MyClass::MyContent这样的格式来引用
Kernel模块
Object引用了Kernel模块,因此Kernel模块中的方法可以对任何对象使用。那么可以用类似打开类的方式给Kernel增加方法(称为“内核方法”)
module Kernel def my_method endend
self
class MyClass def testing_self @var = 10 self.my_method() end def my_method @var = @var+1 endend
- Ruby元编程笔记一
- Ruby元编程笔记<一>
- 《Ruby 元编程》笔记
- Ruby元编程-学习笔记(一)-对象模型
- Ruby元编程-学习笔记(一)-对象模型
- Ruby元编程(一)
- Ruby元编程笔记<二>
- 研读《Ruby元编程》一书
- Ruby元编程-学习笔记(二)-方法
- Ruby元编程-学习笔记(二)-方法
- ruby元编程
- ruby元编程记录
- Ruby 元编程 方法
- Ruby 元编程
- 《ruby 元编程》读书笔记
- 读《Ruby 元编程》
- Ruby 元编程 方法
- ruby元编程读后感
- java基础——IO流及File、RandomAccessFile对象
- 申请ISO13485条件
- 用于构建 RESTful Web 服务的多层架构
- TEXT("aa")
- 使用HibernateTemplate获得sessionFactory
- Ruby元编程笔记一
- c语言字符串的提取
- 杭电ACM_算法题-动态规划
- sed 用法
- <转>android单元测试
- Oracle 数据库的常用操作
- SQLite 事务处理
- IT管理总结
- JMeter测试问题:address already in use