我认为允许模块方法访问包含它的类的实例变量很有用。我认为在模块中指定实例变量名称是脆弱的(如果实例名称为@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编码实践吗?