search
LoginSignup
6

More than 1 year has passed since last update.

posted at

updated at

Organization

FizzBuzzと1から100までの足し算をElixirで書いてみる (ElixirLS extensionをいれてみる)

はじめに

  • @aaabb6211 さんのfizzbuzzを噛み砕くを拝見しまして、ぜひElixirで書いてみようとおもいました。
  • ↑ こちらの記事にあります「本気でそれをなしたいと思えば世界があなたに味方をしてくれる(アルケミスト)」は、この本の一節でしょうか
  • We are the Alchemists, my friends !!!
  • Elixirは1.10.3-otp-22 を使いました

書いてみる

lib/awesome.ex
defmodule Awesome do
  # Thanks for プログラミングElixir
  def fizz_buzz(n) do
    do_fizz_buzz(rem(n, 3), rem(n, 5), n)
  end

  defp do_fizz_buzz(0, 0, _n), do: "FizzBuzz"
  defp do_fizz_buzz(0, _, _n), do: "Fizz"
  defp do_fizz_buzz(_, 0, _n), do: "Buzz"
  defp do_fizz_buzz(_, _, n), do: n

  def sum_100, do: 1..100 |> Enum.sum()
end
$ iex
iex> 1..15 |> Enum.map(&Awesome.fizz_buzz/1)
[1, 2, "Fizz", 4, "Buzz", "Fizz", 7, 8, "Fizz", "Buzz", 11, "Fizz", 13, 14, "FizzBuzz"]
iex> Awesome.sum_100
5050

ところで

  • 最近、The Pragmatic Studioという動画でプログラミングを教えてくれるサイトがありまして、いまならEarly Access!ということで無料でPhoenix LiveViewの動画教材がみれるのでそこで学んでいます(後半部分は現時点では未公開なのですが有料になるのかも?)
  • そのサイトでの環境構築のおすすめVSCode extensionとして、ElixirLSが紹介されていました
  • さっそく素直にそれをいれてみたのですがなんと、うっすらと @spec なるものがみえるではありませんか!
    • Elixir 界では常識なのかもしれませんが、ついさっき気づいた次第です :rocket: :rocket: :rocket:
    • うっすらのところを押すと、ソースコードに反映してくれます
    • これを自分で書く自信はない。。。

スクリーンショット 2020-05-13 23.48.33.png

Enjoy!!!

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
What you can do with signing up
6