エリクサーでかstruct
かどうかを確認するには、のようにKernel.is_map/1
を呼び出すことで確認できますが、その2つを区別したいと思います。私はそれがモジュール名です取得するために構造体に__struct__
を呼び出すことができることを知っているが、法線マップがスローにそれを呼び出す:マップが構造体でもあるかどうかをチェックする方法?
** (KeyError) key :__struct__ not found in: %{}
だから私の質問があり、変数がマップまたは構造体であればはどのようにチェックします?
例のユースケース:
# I want to handle struct and map inputs differently in my Module
defmodule DifferentThings do
def do_something(arg) when is_map(arg) do
# Do something with Maps
end
def do_something(arg) when is_struct(arg) do
# But handle Structs differently
# Issue is, `is_struct` does not exist
end
end
これはガードでは動作しません –
パターンマッチが必要な場合は、 '%{__ struct__:_} = struct'を使用できます。 –