
Можешь попробовать:
// prettier-ignore
result&.data['address']['ISO3166-2-lvl4']
@Arel согласно Документам для плагина ruby вам нужно будет использовать # stree-ignore вместо этого.
Это на самом деле не работает, если result равно nil:
>> result = nil
=> nil
>> result&.data[:address][:iso]
undefined method `[]' for nil:NilClass (NoMethodError)
В общем, вы должны использовать &. для каждого метода, который вы цепляете после первого &..
Prettier пытается вызвать метод Hash#[] с оператором &., который должен выглядеть так:
>> result&.data&.[](:address)&.[](:iso)
=> nil
# it works when you have result and data hash
class Result
def data = {address: {iso: '123'}}
end
result = Result.new
>> result&.data&.[](:address)&.[](:iso)
=> "123"
Я думаю, &.[] — неудобный способ сделать это, даже если красивее сработало, как задумано. копать здесь предпочтительнее:
>> result&.data&.dig(:address, :iso)
=> "123"
>> result = nil
=> nil
>> result&.data&.dig(:address, :iso)
=> nil
@engineersmnky
Предполагая, что хэш данных на самом деле не нуждается в безопасности:
if result
result.data[:address][:iso]
end
Оставьте это расширению под названием «Prettier», чтобы сделать вещи более уродливыми. Хотя фактическое предложение безопасной навигации (с использованием dig), хотя и правильное и функциональное, на мой взгляд, также ужасно.
Ruby использует
#для комментирования кода, но несмотря на это, похоже, что эта функция не поддерживается для ruby. По крайней мере, это не сработало для меня. Добро пожаловать в переполнение стека.