1 Person
2 def hello
3 puts "Hello!"
4 end
5 end
6
7 Person
8 def goodbye
9 puts "Goodbye!"
10 end
11 end
12
13 #测试
14 p1 = Person.
15 p1.hello # Hello!
16 p1.goodbye # Goodbye!
这个代码也许大家都见过如果是从高级语言转攻ruby可能很奇怪这样能运行吗?在高级语言中拿C#举例这样代码显然不能运行
但是这就是Ruby中部分类实现不用借助其他即可实现部分类而C#中部分类实现却要借助partial关键字来实现如下:
1 public partial Person
2 {
3 public void hello{}
4 }
5
6 public partial Person
7 {
8 public void goodbye{}
9 }
部分类优点:
1、你可以将部分类写在个文件或者多个文件中对类进行扩展
2、可以重写类思路方法
module也具有此种特性
注意:
Ruby部分类和C#部分类还有些差别
如果是高级语言编译器会将这几个文件组合起来起编译无论在哪里这个都是同个类(几个文件组合到起编译成)
而Ruby是脚本语言是解释执行执行个部分类这个部分类思路方法就被加载进去些还没有执行在这里它思路方法还不能够直接就想开始例子
当运行至第个Person 结束时Person类只有hello思路方法只有在执行完第 2个Person ,Person类才有了goodbye思路方法
在我们使用过程定要注意这点通常会将部分类放到配置文件中在执行时就全部加载
1 #module扩展
2 module Travel
3 def forward
4 puts "Forward"
5 end
6 end
7
8 module Travel
9 def backward
10 puts "Backward"
11 end
12 end
13
14 puts Travel.instance_methods # backward forward
最新评论