const_get 和限定 const_get 有什么区别?

2024-01-10

ruby 标准库中有一系列方法,即 const_define?、const_get 或 const_set。

const_defined?, const_get, const_set

而且,在 Rails 的 Active Support 核心扩展中,存在这些个体的“qualified_”对应项。

qualified_const_defined?, qualified_const_get, qualifeid_const_set

有谁可以明确解释这些方法的裸形式和限定形式之间的区别吗?

先感谢您。

Hyo


The qualified_const 助手支持与任意深度的常量(不仅仅是主题的子级)进行交互。

我认为举个例子是解释这个问题最简单的方法。比方说Foo::Bar::Baz exists:

 > Object::const_get "Foo::Bar::Baz"
NameError: wrong constant name Foo::Bar::Baz
 > Object::const_get "Foo"
=> Foo
 > Foo.const_get "Bar"
=> Foo::Bar
 > Foo::Bar.const_get "Baz"
=> Foo::Bar::Baz

The qualified_方法允许您避免直接遍历模块层次结构:

 > Object::qualified_const_get "Foo::Bar::Baz"
=> Foo::Bar::Baz
 > Foo.qualified_const_set "Bar::Fizz", 123
=> 123
 > Foo::Bar::Fizz
=> 123

我也建议浏览源代码 https://github.com/rails/rails/blob/11f6795b238172c4a13176062bd38b83285799b7/activesupport/lib/active_support/core_ext/module/qualified_const.rb。非常干净。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

const_get 和限定 const_get 有什么区别? 的相关文章

  • 无法使用 Rails 6 Actiontext 渲染 youtube 嵌入 iframe

    我已经设置了一个自定义嵌入模型 这样我就可以将 Instagram 或 YouTube 嵌入等内容添加到我网站上的 ActionText 内容中 它适用于 Instagram 嵌入 但不适用于 YouTube 作为参考 我要显示的 yout
  • Capybara with Rails:如何仅查找不可见元素

    我正在 Rails 项目 Rails 5 2 0 中使用 Capybara capybara 3 1 0 进行系统测试 确保元素不可见的方法是什么 我当时用的是visible false选项 直到我发现它也匹配可见元素 例如我使用 find
  • 使用 Passenger + Apache 相对于 Webrick 的优势

    我想说服我的管理层 使用 Apache 乘客设置是继续生产的方法 而不是使用 webrick 或 mongrel 我从网上找到了一些观点 如果您能添加您的想法 那将非常有帮助 因为这将有力地帮助我表达我的观点 欢迎提供技术细节 如果您有任何
  • 使用 RSpec 测试导轨金属/机架?

    假设我有一个名为 Preview 的 Metal 类 如何使用 RSpec 进行测试 当我尝试时 require spec helper describe Preview do it should return the posted con
  • 轨道上的下一个对象问题

    视频影像 表 id title votes count 视频影像 控制器 def show video Video find params id next video Video order votes count DESC where v
  • Ruby on Rails:Cucumber:如何点击打开新窗口的链接?

    我有一个在新窗口中打开的链接 我需要测试该新窗口中的应用程序部分 任何建议将不胜感激 定义一个包含以下代码的步骤 page driver browser switch to window page driver browser window
  • db:schema:load 与 db:migrate 使用 capistrano

    我有一个 Rails 应用程序 我正在将其移动到另一台服务器 我认为我应该使用 db schema load 来创建 mysql 数据库 因为这是推荐的 我的问题是我正在使用 capistrano 进行部署 并且它似乎默认为 rake db
  • 如何使用 Rails 4 和 Ruby 2.0 应用程序进行实时重新加载?

    如果我在 Rails 4 Ruby 2 0 项目的文本编辑器中编辑 scss 或 erb 文件 我希望在浏览器中看到实时更改 我尝试了 Guard 和 Guard live reload 但它抛出以下错误 22 58 04 ERROR Co
  • 使用设计宝石导轨注销用户

    在管理部分 我显示当前登录用户的列表 现在管理员可以选择一个或多个用户并销毁他们的会话 注销他们 我不知道从哪里开始 请帮助我 您可以使用sign out通过传入用户对象在控制器操作中的方法 Make sure only admins ca
  • 创建费用前验证 CVC 代码

    我正在尝试检查用户输入的 cvc 代码 我已经存储了条带 customer id 和条带 card id 我想在向用户收费之前验证 CVC 代码 以下是创建费用的代码 charge Stripe Charge create amount g
  • ruby 管道、IO 和 stderr 重定向

    我希望有一个 ruby 程序 一个 rake 任务 观察另一个 rake 任务的输出 输出写入器输出到 stderr 我想读一下这些行 我很难设置它 如果我有一个作家 stdout writer rb 不断打印一些东西 usr bin en
  • 通过 SSL 发布 UTF-8 时,HEROKU 上出现“EOFError:已到达文件结尾”

    我在 heroku 上遇到了奇怪的错误 为了重现它 我必须使用请求正文中的任何 UTF 8 字符制作大的 超过几 KB HTTPS POST 这是一个例子 require net https require uri Accutally I
  • 从 Rails 3.1.3 升级到 Rails 3.2.1。资产错误

    我尝试将应用程序从 Rails 3 1 3 升级到 Rails 3 2 1 但资产出现问题 我有这样的错误 ActionController RoutingError No route matches GET assets logos op
  • Rails 4 - 每次运行 rake db:migrate 命令时,rake 命令都会显示弃用警告

    pinterestclone rake db migrate DEPRECATION WARNING Sprockets method register engine is deprecated Please register a mime
  • 有没有办法避免自动更新 Rails 时间戳字段?

    如果您有数据库列created at and updated at当您创建和更新模型对象时 Rails 将自动设置这些值 有没有办法在不接触这些列的情况下保存模型 我正在引入一些旧数据 我想根据 不同名称的 旧数据字段中的相应值设置这些值
  • 启动同一作业的多个延迟作业进程

    我在运行多个工作人员的设置中使用延迟作业 就我的问题而言 这并不重要 但假设我运行 10 个工作线程 当前在开发模式下执行此操作 我遇到的问题是两个不同的工作人员有时开始处理同一项工作 调用我的工作对象上的执行方法 据我所知 延迟作业正在使
  • Devise:允许用户注册为“UsErNaMe”但使用“用户名”登录

    与大多数网站的工作方式相同 我将 UsErNaMe 存储在数据库中 但让用户使用 用户名 登录 这是一个相当明显且必要的功能 很多人似乎都问过它 但我不断遇到的解决方案似乎与 Devise 自己的文档脱节 例如 考虑这篇博文 http an
  • 更改 Active Storage 的默认 URL

    我们可以更改从活动存储创建的默认 永久 url 以重定向到 S3 类似于rails active storage representations 我不喜欢网址中的框架名称 Thanks UPDATE 最近 Rails 6 中增加了一个可配置
  • 在生产环境中使用 Rails 设置 sunspot solr

    我尝试了各种链接 但我似乎找不到关于创建与生产中的 Rails 一起运行的 solr 实例的好资源 我知道您必须为生产设置 solr 服务器 我已经尝试使用 tomcat 设置 solr 但我似乎无法将其链接到 Rails 应用程序 有什么
  • Rails content_for 和yield 之间有什么区别?

    例如 content for stuff vs yield stuff 我知道它们的实现略有不同 但是有任何真正的功能差异吗 是否有普遍接受的最佳实践 yield是您指定内容区域在布局中的位置的方式 你可能有这样的事情 div h1 Thi

随机推荐

  • FoldList 类似于 J 中的原语

    Mathematica 有一个内置函数 称为FoldList FoldList函数说明 http reference wolfram com mathematica ref FoldList html J中有类似的原语动词吗 我知道 J 有
  • 如何保存 Eclipse 设置(字体、格式等)?

    如何在 Eclipse 3 6 中导出我的设置 字体 语法着色 格式等 以便我可以在另一个安装中再次使用它们 您可以将文件夹 metadata 保存在工作区中 该文件夹包含您的首选项 只需在重新安装并完成后恢复它即可 请注意 metadat
  • Azure DevOps 管道触发器问题消息不会消失

    我们的团队正在实施 Azure DevOps 测试管道 在我们最初提交创建管道 yml 文件后 显示了此错误消息 经过研究后 我意识到我忘记将触发器包含在 yml 中 但是添加后 这个错误消息并没有消失 不过 管道正在按预期工作 我们只是使
  • Asp .Net Core单元测试模拟UserManager.CreateAsync并返回Identity结果

    致力于 Net Core 项目并创建了以下服务来跨页面共享通用方法 namespace MyApp Tests Services public class UserServiceTest Fact public async Task Cre
  • C++ 使用大括号而不是赋值运算符声明和实例化作用域变量

    我正在观看 Bjarne Stroustrup 关于 C 11 风格的主题演讲 link http channel9 msdn com Events GoingNative GoingNative 2012 Keynote Bjarne S
  • 删除超过 2 小时的 Firebase 数据

    我想删除超过两个小时的数据 目前 在客户端 我循环遍历所有数据并对过时的数据运行删除 当我这样做时 db on value 每次删除某些内容时都会调用该函数 另外 只有当客户端连接时才会删除内容 如果两个客户端同时连接会发生什么 我在哪里可
  • 我应该使用“==”进行 .NET 本地化字符串比较吗?

    NET 中不使用 比较本地化字符串的原因是什么 如果我使用 CultureInfo 将如何执行比较 如果将文化感知字符串与 进行比较 例如 Strasse 与 Stra e 则返回 false 如果您需要对 UI 内容进行文化感知比较 Li
  • Map>

    Java 为我提供了
  • Android Maps API 版本 1 到版本 2 的迁移

    背景 我继承了别人的问题 并正在尝试启动并运行一个应用程序 多名开发人员放弃了该项目 现在轮到我了 我是一名 iOS 开发人员 但我已经完成了一些简单的 Android 项目 问题应用程序是一个原生 Android 最初使用 API 级别
  • IISExpress 是单线程的吗?

    我正在编写一个利用声明来确保安全的自定义 Net 应用程序 因为我们正在跨越许多边界 Web API 批处理等 在开发过程中 有时我会在通过 Chrome 登录时在系统中创建一些内容 然后我会通过 Edge 中的另一个帐户来测试新创建的项目
  • 如何在 git 中显示作者贡献的统计信息?

    我正在与一个团队合作开发一个 git 项目 我希望看到每个作者在编写的行数或编辑的行数等方面的贡献 我如何显示作者的统计数据 很简单 git shortlog s n
  • 使用robotframework api从python执行robot关键字

    用机器人语言编写复杂的机器人关键字有时非常耗时 因为机器人语言不是真正的编程语言 我想用 python 编写我的关键字 并且只用 robotsframework 语言公开简单的 html 表 问题是我们已经有很多用机器人语言编写的低级机器人
  • 如何验证电话号码格式

    我即将创建电话号码格式验证 格式为 10 位数字 包括加号 例如 0133999504 尽管我已经声明了模式 但我尝试禁止使用 符号或任何其他字符 但验证不起作用 还有其他想法或解决方案吗 1st I declared the string
  • 编译Python代码并将其链接到C++程序?

    我很清楚存在许多允许 C 代码运行 python 代码的可能性 反之亦然 Cython Boost Python 然而 除非我弄错了 所有这些方法都只是 调用 相关的 python 脚本并管理 C 程序和 python 脚本之间的交互 因此
  • 120 MB CSV 文件的 String.Split() 上的 .NET System.OutOfMemoryException

    我正在使用 C 读取约 120 MB 的纯文本 CSV 文件 最初 我通过逐行读取来进行解析 但最近确定首先将整个文件内容读入内存会快很多倍 解析已经相当慢了 因为 CSV 的引号内嵌入了逗号 这意味着我必须使用正则表达式拆分 这是我发现的
  • 使用 Windows Live/OneDrive REST API 获取联系人的电话号码和电子邮件

    是否有人成功使用 Live SDK 也称为 OneDrive SDK 来检索用户联系人的电子邮件地址和 或电话号码 我能做的最好的事情是获取用户联系人的个人资料 但它只包括散列电子邮件地址 没有电话号码 例如 id contact 1e68
  • 在带有组合框和文本框的模板列中向上/向下滚动时应用程序崩溃

    正如标题所示 应用程序在滚动时崩溃 我添加了MouseWheel and PreviewMouseWheel事件来处理列中的滚动 但有些仍然可以完成 无法追溯到特定行 但我相信这可能与以下代码有关 TextBox ValueCell Tex
  • React Native 0.63.4 ios 14 无静态图像

    我尝试使用 Xcode 12 4 12D4e 构建一个版本并反应本机 0 63 4 并且本地图像未显示 但 url 图像显示 我找到了很多相关主题和解决方案 但没有任何效果 我被困了 3 天 我的项目的每个图像都有此警告 框架 CUICat
  • 如何编写 .gitlab-ci.yml 作业仅在合并请求中运行

    当 gitlab ci yml 仅在合并请求中运行时 如何正确编写作业 test c stage test script echo This job tests something It will only run when all job
  • const_get 和限定 const_get 有什么区别?

    ruby 标准库中有一系列方法 即 const define const get 或 const set const defined const get const set 而且 在 Rails 的 Active Support 核心扩展中