首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索顶级名称空间Ruby

问检索顶级名称空间Ruby
EN

Stack Overflow用户
提问于 2019-09-21 08:00:07
回答 2查看 405关注 0票数 2

我有许多名称空间,但我需要获取顶级名称空间的名称。

A::B::C

因此,如果我调用.class,我会得到A::B::C,但我需要它只返回顶级名称空间A。

有什么方法可以解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2019-09-22 05:44:49

假设您有以下嵌套模块:

代码语言:javascript
复制
module A
  module B
    module C
    end
  end
end

如果你得到了这个模块

代码语言:javascript
复制
m = A::B::C 

那么顶层模块等于:

代码语言:javascript
复制
top = Module.const_get(m.to_s[/.+?(?=::)/])
  #=> A 
top.is_a? Module
  #=> true

参见Module#const_get。正则表达式是这样写的:“延迟匹配后面跟两个冒号的一个或多个字符(?)”,(?=::)是一个正向先行。

票数 0
EN

Stack Overflow用户

发布于 2019-09-23 16:57:54

您可以使用parents方法来获取所有父模块的数组。

代码语言:javascript
复制
module A
  module B
    module C
    end
  end
end

my_namespace = A::B::C
my_namespace.parents  # => [A::B, A, Object]
my_namespace.parents.last(2).first  # => A
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58036250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档