LoginSignup
22
7

More than 1 year has passed since last update.

Elixirのコードを気軽に触ってみよう!キラキラさせたり草を生やすよ

Last updated at Posted at 2022-10-01

本記事は下記イベント進行用の記事です。

Elixir Schoolで基本の記法をやってみよう

Replitでサインアップ(ユーザー登録)しよう

Elixir SchoolではElixirのインストールとiex(対話モード)を使っていますが
今回はElixirのインストールはせず、ブラウザ型IDEのRaplitを使用します。

ユーザー登録がまだの方はサインアップを、ユーザー登録済の方はサインインしましょう。
メールアドレスでの登録のほか、GoogleやGitHubアカウントでの登録もできます。

基本のキ:入門、基本データ型、そして基本的な演算

まずは基本の構文を進めていきましょう。10〜15分くらいもあれば大丈夫です。

途中で出てくる言葉

  • 真理値
    • 真偽値とも呼ばれる
  • アトム、is_atom、is_boolean、div、rem
    • Kernel に含まれている。自動的にインポートされる。
  • Erlangのビルトインのものも含めたライブラリのモジュール

キラキラさせてみる

さて、基本のキを押さえたので、これからは例題を触ってみて、解説をしていきます。

サンプルコードは @t-yamanashi さんからいただきました!ありがとうございます:v:

1..255
|> Enum.map(& "#{IO.ANSI.color(&1)}*")
|> IO.puts

Replitで実行してみました!

スクリーンショット 2022-10-01 21.46.18.png

分解してみる

|>(パイプ演算子)とIO.puts

IO.puts("hello")
IO.puts(1 + 2)
"hello" |> IO.puts
1 + 2 |> IO.puts

Enum.map

Enum.map([1,2,3], fn x -> x + 1 end)
Enum.map(1..3, fn x -> x + 1 end)
1..3 |> Enum.map(fn x -> x + 1 end)

IO.ANSI.color

IO.ANSI.colorは出力する文字列の前に置くことで色指定ができます。
Elixir School基本の中で出てきた式展開が使われています。

IO.puts("#{IO.ANSI.color(1)}Hello?")

キラキラの応用:文字を生やす

1..1000
|> Enum.map(fn _ -> "#{IO.ANSI.color(0, Enum.random(1..5), 0)}■" end)
|> IO.puts()

スクリーンショット 2022-10-01 21.50.30.png

アンダースコアは何?

Elixirでは変数が使われない場合、警告が表示されます。
変数を使わない場合、変数のはじめに「_」をつけると警告の対象外になります。

Enum.random

引数として指定されたリストのうちランダムな要素を返します。

Enum.random([1,3,5])
Enum.random(1..10)

Enum.join

指定されたリストを文字列として結合します。
第2引数にセパレーターが渡すこともできます。

Enum.join(1..10)
Enum.join(1..10, ",")

ライフゲームを動かしてみよう

最後にたまぬぎさん作成のライフゲームを動かしてみましょう。

さいごに

ここまでお疲れさまでした!
コードを動かすのをじっくりやってみると発見があって、それが不思議だったり面白かったりしますね。

22
7
2

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
  3. You can use dark theme
What you can do with signing up
22
7