即使我不能创建模块的实例,我怎么可能在模块中有实例变量?下面单元Stacklike@stack的目的是什么?

module Stacklike
  def stack
    @stack ||= []
  end
end

推荐答案

将实例变量视为包含模块的任何类中都会存在的变量,这样就更有意义了:

module Stacklike
  def stack
    @stack ||= []
  end

  def add_to_stack(obj)
    stack.push(obj)
  end

  def take_from_stack
    stack.pop
  end
end

class ClownStack
  include Stacklike

  def size
    @stack.length
  end
end

cs = ClownStack.new
cs.add_to_stack(1)
puts cs.size

将输出"1"

Ruby相关问答推荐

Ruby - 使用索引值识别和更新数组中的重复项

Ruby ERB 类给出未定义的局部变量或方法,但 erb 解析良好

在 Ruby 中,如何编写一个可以与 &:symbol 一起使用的简单方法?

类中的 Ruby 类(或模块中的模块)

Ruby 的 Object#taint 和 Object#trust 方法是什么?

rbenv 没有显示可用的 ruby​​ 版本

Ruby 中的p是什么?

如何在 ruby​​ 中针对正则表达式测试整个字符串?

从类对象获取类位置

你能在 Python 的核心类型上修改补丁方法吗?

如何在课堂上使用 Enumerable mixin?

Ruby 1.9:如何正确大写和小写多字节字符串?

从Ruby中的子类方法调用父类中的方法

Ruby 中的Monkey Patching到底是什么意思?

Ruby:捕获异常后继续循环

Ruby 中的动态方法调用

在 Ruby 中使用元组?

正则表达式中的 `?i` 和 `?-i` 是什么意思?

如何在文件夹及其所有子文件夹中搜索特定类型的文件

判断文件名是文件夹还是文件