我正在尝试访问像这样的哈希中的数据:
result&.data['address']['ISO3166-2-lvl4']
但是当我保存文件时,Prettier 将其更改为:
result&.data&.[]('ISO3166-2-lvl4')
这不起作用。 Prettier 在这里想做什么?我该如何阻止它?
最佳答案
如果 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"
我认为,&.[]
是一种尴尬的做法,即使更漂亮按预期工作。 dig
这里的方法会更好:
>> result&.data&.dig(:address, :iso)
=> "123"
>> result = nil
=> nil
>> result&.data&.dig(:address, :iso)
=> nil
@engineersmnky
假设数据哈希实际上不需要安全性:
if result
result.data[:address][:iso]
end
关于ruby - VS Code Prettier 破坏哈希访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75175936/