Help us understand the problem. What is going on with this article?

Elixir Functions with Guard Clauses

More than 5 years have passed since last update.

Elixir Functions with Guard Clauses

概要

Elixir の Functions と Guard Clauses について。

Function の呼び出し時に、引数の型によって処理を分けたい場合、
Guard Clauses を利用します。

サンプル

defmodule MultiModuleDouble do
  def double(x) when is_number(x) do
    x * 2
  end

  def double(x) when is_list(x) do
    x ++ x
  end

  def double(x) when is_binary(x) do
    try do
      double(String.to_integer(x))
    rescue
      e in ArgumentError -> x <> x
    end
  end
end

IO.inspect MultiModuleDouble.double(2)
IO.inspect MultiModuleDouble.double([1, 2, 3])
IO.inspect MultiModuleDouble.double("2")
IO.inspect MultiModuleDouble.double("a")
  • 出力
4
[1, 2, 3, 1, 2, 3]
4
"aa"
tbpgr
Rubyを扱う人事(研修開発、エンジニア採用) Learning Designer。 tbpgr の読み方は(てぃーびー) 個人ブログでも色々と情報を垂れ流してます。 http://tbpgr.hatenablog.com/
http://tbpgr.hatenablog.com/
studist
「伝えることを、もっと簡単に」をミッションにビジュアルSOPマネジメントプラットフォームのBtoB SaaS「Teachme Biz」を開発・運営するスタートアップ
https://medium.com/studist-dev
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away