访问 ruby​​ 中嵌套哈希的元素[重复]

2024-01-04

我正在编写一个用 ruby​​ 编写的小实用程序,它广泛使用嵌套哈希。目前,我正在检查对嵌套哈希元素的访问,如下所示:

structure = { :a => { :b => 'foo' }}

# I want structure[:a][:b]

value = nil

if structure.has_key?(:a) && structure[:a].has_key?(:b) then
  value = structure[:a][:b]
end

有一个更好的方法吗?我希望能够说:

value = structure[:a][:b]

And get nilif :a 不是关键structure, etc.


传统上,你确实必须做这样的事情:

structure[:a] && structure[:a][:b]

然而,Ruby 2.3添加了一个方法Hash#dig https://ruby-doc.org/core-2.3.0/Hash.html#method-i-dig这使得这种方式更加优雅:

structure.dig :a, :b # nil if it misses anywhere along the way

有一种宝石叫ruby_dig https://github.com/mottalrd/hash_dig_and_collect/这将为您进行反向修补。

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

访问 ruby​​ 中嵌套哈希的元素[重复] 的相关文章

随机推荐

  • Ant 公然忽略 JAVA_HOME 环境变量

    我刚刚获取了最新版本的 Android SDK 并开始尝试使用它 与几乎其他人提出这个问题不同 我运行的是 Linux 即 Linux Mint 13 我目前正在尝试使用 ant 编译一个 Hello World 程序 通过安装 sudo
  • HeaderViewListAdapter 随机崩溃

    我在 crashlytics 中遇到随机崩溃 但无法模拟它 它在 Android V2 和 V4 上都会随机崩溃 但是非常非常罕见 java lang IndexOutOfBoundsException Invalid index 3 si
  • CLion 在运行可执行文件时找不到共享库

    我正在做一个项目 到目前为止 我一直在使用一个简单的编辑器和我自己的 Makefile 来构建它 不过 我想切换到 CLion 根据这个问题 https stackoverflow com questions 26918459 using
  • 使用 XMLHttpRequest 发送 POST 数据

    我想在 JavaScript 中使用 XMLHttpRequest 发送一些数据 假设我有以下 HTML 表单
  • 在我的笔记本电脑上运行 MPI 代码

    我是并行计算世界的新手 你能告诉我是否可以在我的双核笔记本电脑上使用 MPI 例程运行 C 代码 或者是否有任何模拟器 仿真器可以做到这一点 大多数 MPI 实现使用共享内存在位于同一主机上的队列之间进行通信 设置笔记本电脑不需要任何特殊操
  • Spring Boot 中用户主目录的环境特定属性

    我正在开发一个 Spring Boot 应用程序 我必须在其中设置Environment specific properties从用户主文件夹 我在 Google 上找到了同样的结果 发现我们可以将不同的属性文件 开发 测试 生产 放在资源
  • COM 无法启动编译为 AnyCPU 的进程外 .Net 服务器

    我正在尝试让 COM 启动我的进程外 NET COM 服务器 如果服务器进程是用 x64 编译的 它就可以工作 但如果我使用 AnyCPU 这就是我想要的 那么它会挂起一段时间 最终失败并显示 0x80080005 CO E SERVER
  • 如何向 VisualVM 提供 JVM 参数?

    我使用 JDK 1 6 0 26 中的 VisualVM 来分析在 Tomcat 下运行的 Java Web 应用程序 但 VisualVM 经常告诉我它没有足够的内存来拍摄快照 并使用 Xmx 开关为 Netbeans 提供更多内存 问题
  • appcompat_v7 abc_activity_chooser_view.xml 中的重复 id @+id/image:58

    创建 apk 时出现以下错误 重复的 id id image 已在此布局中先前定义 abc activity chooser view xml 布局中的 58 appcompat v7 于是我就清理了一下 还是这样 该文件中确实存在重复的
  • 括号检查器代码的测试用例不正确。对于“(()”输出应该是“不平衡”,但我正在“平衡”[重复]

    这个问题在这里已经有答案了 给定一个表达式字符串 exp 检查是否是对和顺序 表达式中是正确的 例如 程序应该打印 balanced for exp and not balanced for exp Input 输入的第一行包含一个整数 T
  • 根据 ocr 图像结尾的段落将字符串拆分为列

    我正在开发一个项目 将打字机写的战争日记笔记从 PDF 扫描转换为文本 我可以成功地 对于原始的未调整大小的文件 可能是 90 提取我首先裁剪的主要文本 Reprex 数据 您可以从头开始尝试使用图像或我在下面提供的文本 我的挑战是保持文本
  • AngularJS:将对象从指令传递到控制器

    在我的指令中 我正在实例化一个对象 我想将此对象传递到与该指令关联的控制器的范围 我怎么做 请记住 这是一个独立的代码 供您理解该问题 在实际问题中 它无助于在控制器内部实例化该对象 我知道指令中的范围对象用于传递 HTML 中指定的值 我
  • 如何在运行单元测试时获取目录

    您好 当运行我的单元测试时 我想要获取我的项目正在运行的目录以检索文件 假设我有一个名为 MyProject 的测试项目 我运行的测试 AppDomain CurrentDomain SetupInformation Application
  • SecurityContextHolder 提供错误的用户详细信息

    在我的应用程序中 我们正在捕获每笔交易的用户详细信息SecurityContextHolder认证对象 但它给出了错误UserID它似乎 以下是代码片段供您参考 安全上下文 xml 弹簧安全 3 2
  • 使用 Spring Data Redis 连接到多个 Redis 服务器

    我正在开发一个具有以下要求的应用程序 Spring 从Redis Server1读取数据 从Redis Server2读取数据 从Redis Server3读取数据 AND 将信息保存到 MySQL 有人可以给我们一个想法 使用 Sprin
  • iGraph中介数的计算

    我见过一些info https stackoverflow com questions 20388087 differences in centrality measures between igraph and tnet表明 iGraph
  • 无法在 iOS 中创建具有文件保护的 SQLite3 数据库

    背景 我一直在观看 WWDC 2011 208 Securing iOS application 他们提到如何使用名为 NSFileProtection 的文件加密来保护我们的数据 当我发现提到的自动方法 38 00 被窃听 https d
  • 原子长操作

    我需要执行以下操作 average total elapsed are Long s average total average elapsed total 但我想用AtomicLong 这就是我正在尝试的 但我不太明白它是否正确 aver
  • Power BI 矩阵中的多种数据类型

    我在 10 个位置有大约 20 个不同的指标 并且想要创建一个矩阵 其中指标作为行 位置作为不同的列 我遇到的问题是指标是不同的数据类型 有些是整数 有些是 s 有些是 s 有没有办法像 Excel 一样将每一行自定义格式为不同的数据类型
  • 访问 ruby​​ 中嵌套哈希的元素[重复]

    这个问题在这里已经有答案了 我正在编写一个用 ruby 编写的小实用程序 它广泛使用嵌套哈希 目前 我正在检查对嵌套哈希元素的访问 如下所示 structure a gt b gt foo I want structure a b valu