如何使用 Array#dig 和 Hash#dig, 介绍 Ruby 2.3?
Ruby 2.3 介绍一种新方法
和
, 叫
. 我在关于新版本中看到的博客中看到的例子是非常挑剔和混乱的例子:
我不使用三重嵌套的扁平阵列。 如何有用的实际例子是什么?
UPDATE
事实证明,这些方法解决了最常见的一个 Ruby 问题。 以下的问题有类似的东西 20 复制品,所有这些都解决了
:
https://coderoad.ru/4371716/
https://coderoad.ru/1820451/
hash
Array
和
Hash
, 叫
dig
. 我在关于新版本中看到的博客中看到的例子是非常挑剔和混乱的例子:
# Hash#dig
user = {
user: {
address: {
street1: '123 Main street'
}
}
}
user.dig/:user, :address, :street1/ # => '123 Main street'
# Array#dig
results = [[[1, 2, 3]]]
results.dig/0, 0, 0/ # => 1
我不使用三重嵌套的扁平阵列。 如何有用的实际例子是什么?
UPDATE
事实证明,这些方法解决了最常见的一个 Ruby 问题。 以下的问题有类似的东西 20 复制品,所有这些都解决了
dig
:
https://coderoad.ru/4371716/
https://coderoad.ru/1820451/
hash
没有找到相关结果
已邀请:
3 个回复
诸葛浮云
赞同来自:
s 的 - 为了
今天的链接是我们在生产环境中看到的最常见错误。
新参数
允许您跳过检查
访问嵌套项目时。 由于在数据结构未知或更改的情况下,Hashi最好使用,因此对此的官方支持有很多意义。
让我们来吧你的榜样。 下列的:
不是
相当于:
在这种情况下
user[:user]
或者
一样
, 这将导致执行错误。
相反,它相当于以下内容,即当前的成语:
注意在其他地方创建的字符列表是多么琐碎
, 那么如何重新创建这样一个列表的最后一个设计并不是很简单。
在不担心参考的情况下,可以轻松执行动态访问
.
很明显
也更短。
要注意的一个重要时刻是
回归自己
, 如果任何键都这样才能使其也可以导致相同类的错误在线下面一步,因此提供合理的默认值可能是一个好主意。 /这种方法提供始终用预期方法响应的对象
https://en.wikipedia.org/wiki/ ... 3Ruby
Null ./
再次,在您的示例中,空字符串或类似的东西 "N/A", 取决于什么是有意义的:
董宝中
赞同来自:
喜特乐
赞同来自:
理论上
这会保存一吨代码,如果存在另一个级别,则会在每个级别检查任何级别,在没有哪些级别的情况下持续错误。
在实践中
你还需要很多这个代码,因为
无论如何会在某些情况下创造错误 /例如,如果链中的某些内容是一个未精炼的对象。/
因此,您的问题实际上非常忠诚。 -
我没有看到我们可以期待的用途。 这在此处评论,例如:
http://anamaria.martinezgomez. ... .html
.
去做
避免这些错误,尝试
https://github.com/Convincible ... _dial
gem, 我写的包裹着
并恢复回归 nil/default, 如果发生任何错误。