動かざることバグの如し

近づきたいよ 君の理想に

ElixirでFizzBuzz

condを使う場合

defmodule FizzBuzz do
  def upto(n) do
    cond do
      rem(n, 15) == 0 -> "FizzBuzz"
      rem(n, 3) == 0 -> "Fizz"
      rem(n, 5) == 0 -> "Buzz"
      true -> n
    end
  end
end

for n <- 1..100 do
  IO.puts FizzBuzz.upto(n)
end

パターンマッチを使う場合

defmodule FizzBuzz do
  def upto(n) when rem(n, 15) == 0, do: "FizzBuzz"
  def upto(n) when rem(n, 3) == 0, do: "Fizz"
  def upto(n) when rem(n, 5) == 0, do: "Buzz"
  def upto(n), do: n
end

for n <- 1..100 do
  IO.puts FizzBuzz.upto(n)
end

参考リンク