4
RubyでHash#Digためエリクシール相当するものはありますか?エリクサーマップ掘る機能
iex(1)> m = %{foo: %{bar: %{baz: 1}}}
%{foo: %{bar: %{baz: 1}}}
iex(2)> get_in m, [:foo, :bar, :baz]
1
iex(3)> get_in m, [:foo, :zot]
nil
RubyでHash#Digためエリクシール相当するものはありますか?エリクサーマップ掘る機能
iex(1)> m = %{foo: %{bar: %{baz: 1}}}
%{foo: %{bar: %{baz: 1}}}
iex(2)> get_in m, [:foo, :bar, :baz]
1
iex(3)> get_in m, [:foo, :zot]
nil
使用Kernel.get_in/2
掘ります。マップと構造体の両方で動作する何かを作るために、あなたはそれを自分で行う必要があります。
def dig(nil, _), do: nil
def dig(struct, []), do: struct
def dig(struct, [head | tail]) do
struct
|> Map.get(head)
|> dig(tail)
end
> m = %{foo: %{bar: %{baz: 1}}}
> dig m, [:foo, :bar, :baz]
1
> dig m, [:foo, :zot]
nil
> dig m, [:foo, :zot, :qux]
nil
get_in
はマップと正常に動作します:
Rubyは例
h = { foo: {bar: {baz: 1}}}
h.dig(:foo, :bar, :baz) #=> 1
h.dig(:foo, :zot) #=> nil