LoginSignup
17
10

More than 5 years have passed since last update.

ElixirプログラマーのためのErlangワンポイント文法

Last updated at Posted at 2018-06-23

はじめに

ElixirプログラマーがOTPの機能を使うとき、Erlangのドキュメントを見る必要が出てきますよね。コードサンプルなどが載って読む必要が出てくるのですが、Erlangの文法は独特です。慣れたらそれなりに読めるようになるのですが、Elixirに戻って再度見ると面食らう・・・ということを何度もやっているので、早見表的なものを作ってみました。

基本 Elixirとの比較

これだけ押さえておけば、だいたい読めます。
一番の難関(?)は、変数が大文字で始まり、アトムが小文字で始まるルールです。
ドキュメントの例文などを読む際、Elixirの感覚で変数だと思っていたものが、「変だな?」と思ったら、それはアトムだったということが多々あります。

種別 解説 Erlang例 Elixir例
変数  大文字から始まる MyVal my_val
アトム  小文字から始まる。記号含む ets :ets
マクロ  使用時は?から始まる 下記参照
コメント %% %% #
関数呼び出し モジュール名:ファンクション名() math:pi() :math.pi()
メッセージパッシング Pid ! Message pid ! "hello" send( pid, "hello")

関数のパターンマッチング

;でつないで、最後.

ガード式

when以降

記号 役割
,(カンマ)つなぎ 論理積
;(セミコロン)つなぎ 論理和
=:= 左辺と右辺が同じ値ならtrue

組み込みマクロ

機能 Erlang Elixir
モジュール ?MODULE __MODULE__
ファイル名 ?FILE __FILE__
?LINE __LINE__

レコード 構造体

Erlang(record) Elixir(struct)
#item{name="apple"} %Struct_name{item=>"apple"}

-record(product, {id,name,price}).  %% productという名の構造体を定義
  Apple = #item{id=431,name=apple,price=200}.

> #item{name= Name,price= Price} = Apple.  %% ・・・要素を変数に束縛 / 順序に注目
#item{id = 431,name = apple,price = 200}

> Name.
apple

> is_record(Apple, item).  %%・・レコード判定
true

おわりに


Erlangも読めるようになって、Elixirのパワーをより引き出しましょう。

17
10
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
17
10