使用 Module.nesting 方法时,我可以从调用点返回嵌套模块列表。我在文档和其他地方看到的唯一示例显示了从嵌套模块定义中放置和运行的方法调用:
module M1
module M2
Module.nesting #=> [M1::M2, M1]
end
end
在下面的例子中:
module A
module B; end
module C
module D
# I want to access the name-space chain from this point
end
end
end
# But how can I reference it from our here?
# A::C::D .... ?
有什么方法可以在定义模块后检查模块中的 namespace 链?
我能看到的唯一例子是在定义中创建一个变量来保存生成的调用,以便在定义之外再次引用:
module A
module B; end
module C
module D
$chain = Module.nesting
end
end
end
p $chain
#=> [A::C::D, A::C, A]
有没有一种方法可以向上查找这个名称间隔链,而无需在定义中创建变量以供稍后引用?
最佳答案
在 Ruby 中,“记住”表达式值的方法是将该值赋给变量。
此外,模块定义的值是在主体内计算的最后一个表达式的值。
如果你把两者放在一起,你会得到这样的东西:
chain = module A
module B; end
module C
module D
Module.nesting
end
end
end
p chain
# [A::C::D, A::C, A]
关于ruby - 如何在模块定义之外访问 Module.nesting 的返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59111532/