elixirで
iex> lists
[
["1", "a1", "a2", "a3"],
["2", "b1", "b2", "b3"],
["5", "c1", "c2", "c3"],
["8", "d1", "d2", "d3"]
]
的なリストの中身をID(1,2,5,8)で検索したくて、
とりあえず調べながらやってみたやつです。(もっと綺麗なやり方とかあるはず、、、)
コード
defmodule ListFind do
# id が含まれている list を探す
def id_find(id) do
Enum.find(lists, fn list ->
Enum.at(list, 0) == Integer.to_string(id)
end)
end
# 探したリストから要素を取り出す
def data_find(id) do
case id_find(id) do
nil -> "nil"
list -> Enum.at(list, 1)
end
end
end
Enum.find
とEnum.at
で、引数で渡したidが含まれるのリストを探し、
case
でidが存在しなかった場合を弾いてEnum.at
で抽出。