ruby - 带有字符串键的哈希的安全导航运算符
问题描述
我有个问题:
data = { 'str_key' => ['string1', 'string2'] }
# @param [Hash] data - hash with String key
# @return [boolean]
def some_logic_test?(data)
data&.<what_to_do_with_string_key?>.include?('string1')
end
如何将安全导航运算符&.
用于带有字符串键的散列?密钥转换将由 [原文如此] 强制性?
解决方案
这个键String
在这里并不重要。你想要的(嗯,我猜)是使用安全运算符和[]
方法,你可以这样做:
data&.[]('str_key')&.include?('string1')
你也可以使用Hash#dig
方法,我认为它会提高这段代码的可读性:
data&.dig('str_key')&.include?('string1')
Hash#dig
还具有使用嵌套哈希正常工作的优点(实际上它是为处理这种情况而设计的):
data = { 'str_key' => { 'str_key1' => { 'str_key2' => 'str_value' } } }
data.dig('str_key', 'str_key1', 'str_key2')
# => 'str_value'
推荐阅读
- image - 来自 Flutter Widget 的高分辨率图像
- php - 将动态徽标添加到 Genesis 主导航
- r - 使用 R 计算出现在同一组中的行数
- discord - 我如何知道我的 Windows 10 连接了多少台服务器?
- regex - 仅在 perl 正则表达式中匹配最后一次出现
- sql - 如何在特定事务的屏幕中从 SQLite 数据库中获取保存的数据?
- python - Python Socket 编码和解码客户端数据
- redis - 使用范围命令时是否可以使redis返回长值
- python - 3D 中的向量 3 体问题,向量需要 x、y、dy 和 dx 的错误
- html - 让 Boostrap 父 col 在子 col 之前崩溃?