Rad*_*icz 3 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
Run Code Online (Sandbox Code Playgroud)
如何将安全导航运算符&.用于带有字符串键的哈希?[原文如此] 必须转换密钥吗?
事实上,这个键String在这里并不真正相关。你想要的(好吧,我猜)是使用安全操作符和[]方法,你可以这样做:
data&.[]('str_key')&.include?('string1')
Run Code Online (Sandbox Code Playgroud)
您也可以使用Hash#dig方法,我认为它会提高这段代码的可读性:
data&.dig('str_key')&.include?('string1')
Run Code Online (Sandbox Code Playgroud)
Hash#dig 还具有使用嵌套哈希正常工作的优点(它实际上是为处理这种情况而设计的):
data = { 'str_key' => { 'str_key1' => { 'str_key2' => 'str_value' } } }
data.dig('str_key', 'str_key1', 'str_key2')
# => 'str_value'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1713 次 |
| 最近记录: |