在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Class类是Module的子类,类是一种特殊形式的模块,这个可看我的这篇文章 一步一步学Ruby(五): Class, Module, Object,Kernel的关系。 我们知道最顶级的类是Object,那么最顶级的模块就是Kernel 我们使用模块的的主要目的是用来组织代码,模块化代码,有点类似命名空间,但却有很大的不同 一、创建和使用模块 用module关键字来定义模块 module没有实例,我们使用时把module混合到类中来使用,我们也可以这么理解,把Module里的内容拷贝一份放到类里,成为类的一部分 我们可以把模块放到一个单独的文件里,然后使用时进行加载,看下面的示例,假设我们有一个project.rb的文件,包含了Project模块 我们将Project混合到Manager类里 注意: 在使用require或load时,请求加载的内容放到引号里,而inclue不是用引号,这是因为require或load使用字符串做为参数,而include使用常量形式的模块名,require和load使用字符串变量也可以. 二、混合进模块的类的方法查找 上面say方法查找路径为 D类-->D类里包含的模块-->C类-->C类包含的模块......>Object-->Kernel,当找到第一个时,搜索停止。 同名方法的查找,后面覆盖前面的 用super提升查找路径(调用查找路径上下一个匹配的方法),同样我们使用super可以调用父类的同名方法,initialize是自动执行
三、模块和类可以相互嵌套 module也可以包含类,但调用时需要这样使用 模块名::类名.new
本文作者: 王德水 未经同意,禁止转载 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论