【问题标题】:How to search defined constants in ruby如何在ruby中搜索定义的常量
【发布时间】:2018-05-22 15:36:39
【问题描述】:

如何显示所有已定义的常量,其中包含单词"AjaxDatatablesRails"

我试过这个:

::AjaxDatatablesRails::Extensions
# >> NameError: uninitialized constant AjaxDatatablesRails::Extensions

【问题讨论】:

  • 相信你其实是想AjaxDatatablesRails.constants false
  • ^^ 非常正确 - 这很可能是一个 XY 问题。您是真的 试图查找所有包含“AjaxDatatablesRails”的常量,还是实际上您知道AjaxDatatablesRails 存在,并且您希望查看此类/模块中定义的所有常量?

标签: ruby introspection


【解决方案1】:
Module.constants.grep /AjaxDatatablesRails/

Module.constants 返回一个数组,其中包含可从调用点访问的所有常量的名称。

Enumerable#grep 然后循环遍历这个数组,过滤掉匹配给定模式的名字。

【讨论】:

  • 虽然这个答案是正确的,但鉴于这是rails(或者至少可以合理地假设这是rails)。您可能希望扩展此“从调用点可访问的所有常量”。我的建议是rails 倾向于根据需要延迟加载类,因此此调用可能不会在所有情况下都返回完整列表。
  • 这个问题没有提及或提及rails - 所以我不同意假设这一点是合理的。然而,公平的一点是,由于 ruby​​ 的性质(不是特别是 rails),代码可以动态加载,因此“所有”常量列表是上下文相关的。
  • 嗯,每个人都可以。但是ajax-datatables-rails 是专门为rails 设计的宝石
猜你喜欢
  • 2012-04-09
  • 2015-09-03
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多