私はエリクシールを初めて使う人です。私は、このコードではパターンマッチングとデフォルトパラメータ
defmodule DefaultParams do
def func(p1, p2 \\ 2, p3 \\ 3, p4) do
IO.inspect [p1, p2, p3, p4]
end
end
:私はこのコードを持っている
DefaultParams.func("a", "b") #=> ("a", 2, 3, "b")
それがそのように動作し、なぜ私が理解:なぜならパターンマッチング。 Elixirは、提供されたパラメータを関数定義で定義されているものと照合しようとします。
しかし、私はこれを理解していない:
DefaultParams.func("a", "b", "c") #=> ("a", "b", 3, "c")
はなぜ出力されません("a", 2, "b", "c")
のですか?これは、パラメータで定義されたパターンにも適合します。私はドキュメントで詳細な説明を探しましたが、何も見つかりませんでした。
しばらくそれについて考えた後、私はそれがこのように動作することを疑い開発:
- 「」P1に一致するを
- 「B」P2
- 「Cに一致しています"はp3にマッチしません。なぜなら、不一致があるからです。だから、それがスキップされ、誰かが説明/確認することができP3は3
- 「C」であるデフォルト値は、P4
にマッチングされますか?
編集:固定タイプミス
ああ、非常照明。ありがとうございました! –