7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Elixir タプルとは?

Last updated at Posted at 2024-12-16

こんにちは!
プログラミング未経験文系出身、Elixirの国に迷い込んだ?!見習いアルケミストのaliceと申します。
今回はタプルとは何かについて学んだことをまとめます。

目的

タプルとは何かについて理解する

実行環境

Windows 11 + WSL2 + Ubuntu 22.04
Elixir v1.17.3
Erlang v27.0

タプルとは

複数の値を保持するデータ構造。{}で囲みます。
メモリ内に連続して格納されるため、リストと比較してはタプルの長さや値の取得を高速で取得できます。1

タプルの使いどころ

上記の定義から、タプルは要素の読み取りには向きますが、要素の追加や変更には不向きです。

タプルのパターンマッチ

iex
tuple = {:ok, :example} # タプルの作成
{:ok, atom} = tuple # タプルのパターンマッチ。変数atomに:exampleをバインドする
{:ok, :example}

タプルの要素の追加/変更をしたい場合

タプルの要素の追加/変更をしたい場合、既存のタプルに変更を加えるのではなく新しくタプルを作成します

良い例

iex
result = {:ok, atom, %{}} # 上記のパターンマッチの結果を引き継いで新しいタプルを作成
{:ok, :example, %{}}

悪い例

iex
result = Tuple.insert_at(tuple, 2, %{}) # 既存のタプルに変更を加える
{:ok, :example, %{}}

タプルのパターンマッチ+後続のデータ処理

実行結果に{:ok, 結果}あるいは{:error, エラーの理由}のタプルが来る関数は、タプルのパターンマッチを利用して要素を取り出し、後続のデータ処理につなげられます。
タプルの使い方としては頻出です。

"Hello, World!"を大文字にして"hoge.txt"を更新し、それを読み取ります。

"hoge.txt"の作成+更新前のデータ確認

実行結果が{:ok, 結果}の形をしているのでタプルのパターンマッチを使うことを考えます。

iex
 defmodule Fililr do
  def make_a_file do
    body = "Hello, World!"
    File.write("hoge.txt", body)
    File.read("hoge.txt")
  end
 end

Fililr.make_a_file()
{:ok, "Hello, World!"}

タプルのパターンマッチ

"Hello, World!"を変数txtにバインドします。

iex
{:ok, txt} = Fililr.make_a_file()
{:ok, "Hello, World!"}

タプルから取り出した要素を後続のデータ処理に渡す

iex
txt 
|> String.upcase()
|> then(fn x -> File.write("hoge.txt", x) end)
:ok

更新後のデータ確認

"Hello, World!"が大文字になっていることが確認できます。

iex
File.read("hoge.txt")
{:ok, "HELLO, WORLD!"}

~Elixirの国のご案内~

↓Elixirって何ぞや?と思ったらこちらもどぞ。Elixirは先端のアレコレをだいたい全部できちゃいます:laughing::sparkles::sparkles:

↓ゼロからElixirを始めるなら「エリクサーチ」がおすすめ!私もエンジニア未経験から学習中です。

We Are The Alchemists, my friends!:bouquet:2
Elixirコミュニティは本当に優しくて温かい人たちばかり!
私が挫折せずにいられるのもこの恵まれた環境のおかげです。
まずは気軽にコミュニティを訪れてみてください。3

  1. 『Elixir実践入門』P47,48

  2. @torifukukaiouさんのAwesomeな名言をお借りしました。Elixirコミュニティを一言で表すと、これに尽きます。

  3. @kn339264さんの素敵なスライドをお借りしました。Elixirコミュニティはいろんな形で活動中!

7
0
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
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?