允许模块访问类实例变量而不指定实例名称

时间:2014-10-12 02:21:19

标签: ruby

我认为允许模块方法访问包含它的类的实例变量很有用。我认为在模块中指定实例变量名称是脆弱的(如果实例名称为@local,在模块方法中编写@local),因为它在模块和类之间创建了耦合。因此,我实施了以下内容:

module MyModule    
  def set_class_instance(proc)
    @class_inst = proc
  end
  def module_print_instance
    puts "Module: instance var #{@class_inst.call}"
  end
end

class MyClass   
  include MyModule
  def initialize(var)
    @local = var
    set_class_instance Proc.new {@local}
  end
end

我想知道这是否有点过分。我只想传递一个指向实例变量的指针,用于我的模块。是否有必要将其包装在一个块中才能执行此操作?这是不好的Ruby编码实践吗?

0 个答案:

没有答案