10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【TIPS】タプルのカウントが無い…

Last updated at Posted at 2023-12-24

この記事は、Elixir Advent Calendar 2023 シリーズ14 の15日目です


【本コラムは、2分で読め、1分で試せます】

piacere です、ご覧いただいてありがとございます :bow:

Elixirのタプルって、アレコレ便利ですが、唯一、マップやリストと異なり、「データのサイズ」をカウントする関数が、Tuple モジュールにありません
image.png

また、タプルは Enumerable プロトコルの実装では無いため、Enum モジュールも使えません

iex> {1, 2, 3} |> Enum.count
** (Protocol.UndefinedError) protocol Enumerable not implemented for {1, 2, 3} of type Tuple
    (elixir 1.16.0) lib/enum.ex:1: Enumerable.impl_for!/1
    (elixir 1.16.0) lib/enum.ex:178: Enumerable.count/1
    (elixir 1.16.0) lib/enum.ex:702: Enum.count/1
    iex:16: (file)

今回、その解決+αをTIPSとしてまとめておきました

タプルのカウント

タプルのカウントは、Kernel モジュールの下記でできます

iex> {1, 2, 3} |> tuple_size
3

ちなみにマップのカウントは?

実は、マップのためのカウントも、Kernel モジュールにはあります

iex> %{a: 1, b: 2, c: 3} |> map_size
3

ただ、マップは Enumerable プロトコルの実装なので、Enum モジュールでもカウントが取れます

%{a: 1, b: 2, c: 3} |> Enum.count
3
10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?