1. ホーム
  2. elixir

[解決済み] Elixirのリストやタプルにアイテムが存在するかどうかを確認するには?

2023-01-18 15:06:20

質問

これは一見簡単そうに見えますが、ドキュメントで見つけることができません。私は単純に返す必要があります true または false がリストまたはタプルに存在する場合。は Enum.find/3 は本当にこれを行うための最良の方法なのでしょうか?

Enum.find(["foo", "bar"], &(&1 == "foo")) != nil

どのように解決するのですか?

ここと Elixir Slack の回答から、リストにアイテムが存在するかどうかを確認する方法は複数あります。 Gazler氏の回答によるものです。

Enum.member?(["foo", "bar"], "foo")
# true

または単に

"foo" in ["foo", "bar"]
# true

または

Enum.any?(["foo", "bar"], &(&1 == "foo")
# true

の代わりに項目を検索して返したい場合や true または false

Enum.find(["foo", "bar"], &(&1 == "foo")
# "foo"

タプルをチェックしたい場合は、リストに変換する必要があります (credit @Gazler):

Tuple.to_list({"foo", "bar"})
# ["foo", "bar"]

しかし、@CaptChrisD がコメントで指摘したように、これはタプルの珍しい必要性です。なぜなら、通常パターンマッチのためにタプル内のアイテムの正確な位置を気にするからです。