"パターンマッチング"できればどうすればいいですか?私はアクションが同じであるためにいくつかの異なる条件があるので、これが必要ですか?"または"パターンマッチングのエリクシールの条件
case something123 do
:a -> func1()
:b -> func1()
:c -> func1()
:d -> func2()
end
"パターンマッチング"できればどうすればいいですか?私はアクションが同じであるためにいくつかの異なる条件があるので、これが必要ですか?"または"パターンマッチングのエリクシールの条件
case something123 do
:a -> func1()
:b -> func1()
:c -> func1()
:d -> func2()
end
あなたはin
やリストを使用することができます。in
マクロはあなたがすることができないので(それはガード文からコールされていますし、RHSはリテラルのリストであることを検出したときに
case something123 do
x when x in [:a, :b, :c] -> func1()
:d -> func2()
end
x in [:a, :b, :c]
はx == :a or x == :b or x == :c
に展開しますガードから遠隔機能を呼び出す)。
複数の機能ヘッドを使用して複数の機能を使用できます。
def foo(%{"key" => "value"}), do: do_something()
def foo(%{"other_key" => "other_value"}), do: do_something()
def foo(map), do: do_something_else(map)
defp do_something() do
...
end
defp do_something_else(map) do
...
end
これにより、必要なデータを照合し、それに応じて行動することができます。
実際のコードがより複雑な場合は、多分異なる機能のヘッドを使用して、そのように処理してください。 –