使用字符串键进行哈希的安全导航运算符

时间:2019-02-13 09:47:31

标签: ruby hash safe-navigation-operator

我有问题:

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

如何使用安全导航运算符&.进行带有字符串键的哈希运算?密钥转换是否必不可少?

1 个答案:

答案 0 :(得分: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'