Eralng Course: Module 2 - Sequential Programming (前編)

もくじ

数値(Numbers)

  普通に数値を書く

    2#1010, 16#1AD3: 数字+シャープで2進16進。

    $A: $マークは Char->Ascii

    123.45: 小数点をうつと float

    123E-10: 有効数字のパターンでもかけるよ

アトム(Atoms)

  普通に文字を書く

    aaaa : "aaaa"という文字

    'I am' : スペースをいれたいときはシングルクォート

タプル(Tuples)

  固定長配列

    { aaa, bbb, ccc } : 要素数3のタプル

リスト(Lists)

  可変長配列

    [ aaa, bbb, ccc ] : 要素数3のリスト

変数(Variables)

  大文字で始める。

     値の割り当て(変数束縛)は一回だけ。

     上書きはできない。

複雑なデータ構造 ( Complex Data Structures )

  タプル/リストは重ねられる。

パターンマッチ(Pattern Matching)

  タプル/リストでも変数束縛

    A = 10             : A:=10

    {B, C, D} = {10, foo, bar}  : B:=10, C:=foo, D:=bar

    {A, A, B} = {abc, abc, foo} : A := abc, B = :foo

                      ※Aは2回あるが値が同じなので無矛盾

    {A, A, B} = {abc, def, 123}  : 失敗する

                       ※Aは2回あり、値が違うので

    [A,B,C] = [1,2,3]        : A:=1, B:=2, C:=3

    [A,B,C,D] = [1,2,3]       : 失敗する

                       ※要素数が違う。GNU Rとはちがう。

パターンマッチ(Pattern Matching)

  "|"をつかったリストの操作

    [A,B|C] = [1,2,3,4,5,6,7]   : A:=1, B:=2, C:=[3,4,5,6,7]

    [H|T] = [1,2,3,4]        : H := 1, T := [2,3,4]

    [H|T] = [abc]          : H := abc, T :=

    [H|T] =             : 失敗

             ※ HはHead、TはTail。先頭の値を取り出す。

               foreach/for...inに相当する処理でよくつかう。

               Perlだと pop()/unshift()。

               最後は空リスト[]になり失敗する。

    {A,_, [B|_],{B}} = {abc,23,[22,x],{22}} : A:=abc, B:=22

             ※ _ は無名変数。参照不可。何度でも使える。

               普通の変数は一度しか代入できないので、

               使い捨てしずらい。

               なので、いらんものは _ に放りこんでおく。

- - -

 もくじ

Eralng Course: Module 2 - Sequential Programming

http://www.erlang.org/course/sequential_programming.html