Open3
Erlangスニペット集
Erlangやっていく
文字列連結
++
を使う
"Hello, " ++ Name ++ "!"
正規表現マッチ
re:run()
を使う エスケープはダブルバックスラッシュにする必要がある
マッチオブジェクトが返ってくるのでnot nomatchと比較する
re:run("end with question? ", "\\?\\s*$") /= nomatch
関数パターンマッチ
関数を丸ごとパターンマッチとして使える
leap_year(Year) when Year rem 4 == 0 andalso Year rem 100 > 0 -> true;
leap_year(Year) when Year rem 400 == 0 -> true;
leap_year(_) -> false.
比較
if {condition} -> {then}; true -> {else} end
をつかう
if
Number rem 3 == 0 -> "Three";
true -> "not three"
end
パターンマッチ
基本はcase ... of ...
をつかう
steps(N) -> steps(N, 0).
steps(N, Acc) ->
case N of
1 -> Acc;
N when N < 1 -> erlang:error(badarg);
N when N rem 2 == 0 -> steps(N div 2, Acc + 1);
_ -> steps(N * 3 + 1, Acc + 1)
end.
置換
キャプチャも使える
オプショナルでglobal
を設定できる
re:replace("Hello world!", "(o)", "\\1oo", [global, {return, list}]),
reverse
reverse(Src, Dst) ->
case Src of
[] -> Dst;
[Head | Tail] -> reverse(Tail, [Head | Dst])
end.