口で言うより行うことがErlang習得への近道と信じています。
lists:member/2
lists:member/2は、リストに指定した値の要素が含まれている場合はtrue
を、そうでない場合はfalse
を返します。判定には厳密な比較が実施されます。例として1
と1.0
は厳密には型が異なります。
> lists:member(2, [1, 2, 3, 4]).
true
> lists:member(2.0, [1, 2, 3, 4]).
false
> lists:member({b, 2}, [{a, 1}, {b, 2}, {c, 3}]).
true
タプルのリストに対して検索する場合は、それ専用のlists:keymember/3があります。
lists:keymember/3
keymember(term, integer, [tuple]) -> boolean
keymember(検索ワード, タプルの要素の位置, タプルのリスト) -> boolean
lists:keymember/3は、指定された位置の要素が検索ワードと等しいタプルを探します。見つかった場合はtrue
を、そうでない場合はfalse
を返します。判定には厳密な比較が実施されます。例として1
と1.0
は厳密には型が異なります。
% タプルの最初の要素が「b」であるリスト要素は存在するか
> lists:keymember(b, 1, [{a, 10}, {b, 20}, {c, 30}]).
true
% タプルの二つ目の要素が「30」であるリスト要素は存在するか
> lists:keymember(30, 2, [{a, 10}, {b, 20}, {c, 30}]).
true
% タプルの二つ目の要素が「foo」であるリスト要素は存在するか
> lists:keymember(foo, 2, [{a, 10}, {b, 20}, {c, 30}]).
false
listsモジュールには他にもリスト処理のための関数がたくさんあります。
Elixirにも挑戦したい
闘魂ElixirシリーズとElixir Schoolがオススメです。