带字符串键的哈希的安全导航操作符[关闭]

问题描述 投票:-1回答:1

我有个问题:

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

如何使用安全导航操作符&.进行字符串键哈希?密钥转换将由[原文如此]强制执行?

ruby hash safe-navigation-operator
1个回答
1
投票

这个密钥是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'
© www.soinside.com 2019 - 2024. All rights reserved.