Elixir で簡単に FizzBuzz を実現するパッケージができてしまったのでブログに書いています。
mix new
コマンドでプロジェクトを作成したら、mix.exs
を編集してパッケージを追加します。
def deps do [ {:word_game, "~> 0.1", github: "mattsan/word_game"} ] end
mix deps.get
でパッケージを取り込んで FizzBuzz
モジュール を書きます。
defmodule FizzBuzz do use WordGame, fizz: 3, buzz: 5 end
FizzBuzz
モジュールに fizz/1
関数と buzz/1
関数が追加されるので、こんな感じで Fizz ったり Buzz ったりできます。
import FizzBuzz 1 |> fizz() |> buzz() |> IO.puts() # => 1 3 |> fizz() |> buzz() |> IO.puts() # => Fizz 5 |> fizz() |> buzz() |> IO.puts() # => Buzz 15 |> fizz() |> buzz() |> IO.puts() # => FizzBuzz
fizz/1
と buzz/1
を適用する順序を変えると BuzzFizz
もできます。
15 |> buzz() |> fizz() |> IO.puts() # => BuzzFizz
関数名にはマルチバイト文字も利用できるので ほげふが も書けます。
defmodule HogeFuga do use WordGame, ほげ: 3, ふが: 5 end
import HogeFuga 1 |> ほげ() |> ふが() |> IO.puts() # => 1 3 |> ほげ() |> ふが() |> IO.puts() # => ほげ 5 |> ほげ() |> ふが() |> IO.puts() # => ふが 15 |> ほげ() |> ふが() |> IO.puts() # => ほげふが 15 |> ふが() |> ほげ() |> IO.puts() # => ふがほげ
関数を繰り返し適用することもできます。
15 |> ほげ() |> ほげ() |> IO.puts() #=> ほげほげ 15 |> ふが() |> ふが() |> IO.puts() # => ふがふが