在Ruby中,我们可以把一个模块混入(Mixin)到对象中,从而达到类似多重继承的效果。
下面举几个例子来仔细阐述一下这个问题:
首先定义一个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字样。
其中的味道,自己慢慢体会吧。
分享到:
相关推荐
modernizr-mixin, 在Sass中,针对测试的简单而全面的mixin hardwarebutton混合 一种简单的DRYier测试方法,在Sass中更快更。安装要求 ruby 3.4或者 LibSass 3.2Libsass警告:在 Libsass 3.2.3中有一个已知 Bug,它...
gem 'mixin_bot' 或者 gem install mixin_bot 用法 初始化参数 要使用MixinBot api,您应该先设置密钥。 MixinBot . client_id = '25696f85-b7b4-4509-8c3f-2684a8fc4a2a' MixinBot . client_secret = 'd9dc58107...
ruby-destroyed_at, 用于安全销毁的ActiveRecord Mixin DestroyedAt 查找帮助?如果是一个 Bug ,请在GitHub上打开一个问题。安装将 destroyed_at gem 添加到 Gemfilegem 'destroyed_at'你可以在每个模块中
dry-configurable, 一个简单的mixin使 ruby 类可以配置 干可以配置 概要class App extend Dry::Configurable # Pass a block for nested configuration (works to any
LIBSASS警告:Libsass 3.2.3至3.2.5中存在一个已知的错误,该错误使Modernizr mixin输出错误的选择器。 在下一个Libsass版本中修复该错误之前,唯一的解决方法是坚持使用Libsass 3.2.2。 更多信息: : 有四种...
§13.3.7 Ruby中YAML的使用 99 第十四章 安全控制 100 §14.1 0级 101 §14.1 1级 101 §14.2 2级 101 §14.3 3级 101 §14.4 4级 101 第十五章 单元测试 101 §15.1 什么是单元测试 101 §15.2 Ruby单元测试框架 ...
安装将此行添加到您的应用程序的Gemfile中: gem 'hanami-validations' 然后执行: $ bundle 或自己安装为: $ gem install hanami-validations用法Hanami::Validations是一个混合对象,一旦包含在对象中,就会为其...
Ruby图形库(RGL) RGL是用于图形数据结构和算法的框架。... 在Ruby中,可以使用其他技术来主要使用mixin和迭代器来表达算法和数据结构的通用特征。 BGL文档提到了三种实现通用性的方法: 算法/数据结
这个gem实现了一种简单的机制来限制或限制Ruby中的操作。 安装 将此行添加到您的应用程序的Gemfile中: gem 'ruby-limiter' 然后执行: $ bundle 或将其自己安装为: $ gem install ruby-limiter 用法 基本...
矮胖PNG 该库可以读取和写入PNG文件。 它是用纯Ruby编写的,以实现最大的可移植性。 我再说一遍:它不需要RMagick或任何其他内存泄漏图像库。... 另外,请查看 ,它是一个mixin模块,该模块在C语言中实现了一些Ch
在 Ruby 中构建 JSON 的最性感语言 我一直在用 、 和编写 JSON API,但它们都不能满足我的要求和用例。 jbuilder语法很冗长,partial和mixin的功能其实很弱 RABL 语法简单,但是用它写复杂的数据结构可读性不强 ...
Rails ActiveRecord对象和Rails模板中的用法通过随附的mixin支持。 注意:awesome_print v1.9.0可能不适用于Ruby 2.4或更早版本或Rails 4.2或更早版本。 即将发布的awesome_print v2.0将需要Ruby v1.9.3或更高版本...
mvc, ruby EXTJS 工具 mvc帮助器,MVC mixin和 PORs ( plain-old-ruby-object ),帮助自动生成 EXTJS 存储,包括它的关联的DataReader ( ext.data. jsonreader,Ext.data. Xm
awesome_print, 在全彩色和适当的缩进,漂亮的打印你的ruby 对象 的出色打印 Awesome Print是一个 ruby 库,它可以在完整颜色中打印 ruby 对象,以适当的缩进显示它的内部结构。 Rails 对象和 Rails 模板中的用法...
枪.js ruby 启发了对 javascript 的mixin支持,并带有一点元编程。 非常干净,小而锋利的api。 如果你更喜欢(像我一样)组合而不是继承范式,你应该试一试。 文档将在稍后(可能)跟进。
这是《Ruby 之书》一书中的源代码。 第 1 章:字符串、数字、类和对象 第 2 章:类层次结构、属性和类变量 第 3 章:字符串和范围 第 4 章:数组和哈希 第 5 章:循环和迭代器 第 6 章:条件语句 第 7 章:方法 第 ...
它有一个主要区别: 值结构是不可变的,即它们没有设置器(尽管不是递归*) 此外,这个 gem 提供了以下可选的 mixin,使使用不可变结构时的生活更轻松: :dup_with_changes扩展#dup以采用可选的哈希值来设置副本中的...
在我们自己的本地测试中,我们发现@import ed 文件在直接访问/编译时经常失败,因为 mixin 和变量不可用。 为了允许直接访问这些文件,有一个setShowRawOutput方法来定义一个自定义谓词来确定是否显示原始输出与...
Rails ActiveRecord对象和Rails模板中的用法通过随附的mixin支持。支持的版本Ruby> = 2.3 导轨> = 5.1安装# Installing as Ruby gem$ gem install amazing_print# Cloning the repository$ git clone git://github....