ruby 多继承 mixin include exclude require load

首先定义一个Module:

module Foo
  def bar
    puts "foo";
  end
end


然后我们把这个模块混入到对象中去:

class Demo
  include Foo
end
 

如上编码后,模块中的实例方法就会被混入到对象中:

d=Demo.new
d.bar


会输出foo字样。

下面我们重新定义一下Demo类:

class Demo
  extend Foo
end


这个时候如果你得到的就是静态调用:

Demo.bar

会输出foo字样。

下面我们再来重新定义一下Demo类:

class Demo
  def bar
    puts "demo"
  end
end


然后使用extend方法调用:

d=Demo.new
d.extend(Foo)
d.bar


会输出foo字样。

下面我们再来重新定义一下Demo类:

class Demo
  include Foo
  
  def bar
    puts "demo"
  end
end


然后使用extend方法调用:

d=Demo.new
d.extend(Foo)
d.bar


会输出demo字样。


include主要用来将一个模块插入(mix)到一个类或者其它模块。 
extend 用来在一个对象(object,或者说是instance)中引入一个模块,这个类从而也具备了这个模块的方法。 
通常引用模块有以下3种情况: 
1.在类定义中引入模块,使模块中的方法成为类的实例方法 
这种情况是最常见的 
直接 include <module name>即可 

2.在类定义中引入模块,使模块中的方法成为类的类方法 
这种情况也是比较常见的 
直接 extend <module name>即可 

3.在类定义中引入模块,既希望引入实例方法,也希望引入类方法 
这个时候需要使用 include, 
但是在模块中对类方法的定义有不同,定义出现在 方法 
def self.included(c) ... end 中 



require和load不同,它只加载文件一次,即在第一次执行到require时载入,以后碰到require同一文件时自动忽略,已经被加载的文件保存在$”中。另外,require还可以用来加载二进制格式的库。Require可以使用绝对路径或相对路径,如果使用了相对路径,那么系统会在$:变量包含的目录中搜寻。Require和load的另一个不同是当包含文件是Ruby代码时,require可以不加后缀名。Require将当前所有加载的文件保存在$"变量中。

期末大作业基于python的足球运动员数据分析源码+数据集(高分项目),个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于python的足球运动员数据分析源码+数据集(高分项目)期末大作业基于pyth
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值