これまでのまとめ
本日のお品書き
Elixirさん。名前がときめきますね…。
F#の時も思いましたが、関数型言語に不慣れすぎてちょっと身構えてしまいますね。
FizzBuzz
fizzbuzz.exs
# 匿名関数をfizzbuzzに割り当てている
fizzbuzz = fn(x) ->
# switchやcaseに相当する。もっと上手なやりかたもありそうだが…。
cond do
# 剰余の計算は%ではなくrem
rem(x, 15) == 0 -> IO.puts "FizzBuzz"
rem(x, 3) == 0 -> IO.puts "Fizz"
rem(x, 5) == 0 -> IO.puts "Buzz"
true -> IO.puts x
end
end
# 匿名関数に引数を与える際は.(x)らしい。このドットが何者なのか、調べてもわからず。
# パイプを使うと関数感ありますね(個人的感想)
1..100 |> Enum.map(fn(x) -> fizzbuzz.(x) end)
おまけ
Onlineでの良い実行環境を見つけられなかったため、今回はDockerで環境を構築しました。
FROM elixir
COPY ./fizzbuzz.exs /
CMD ["elixir", "fizzbuzz.exs"]
docker build -t elixir:fizzbuzz .
docker run --rm elixir:fizzbuzz