erlang リスト, 文字列
この時の冒頭の話ですが、「編集画面モード」からも出来る気がしてきた。
*数字*[タグ1][タグ2]タイトル
って書けば良いっぽい・・・でも数字はどうやって決めるのでしょう?(=w=
ま、1日1件だけにしておけって事で!
リスト
- 個数が決まっていないものを入れる
- []で囲む
1> MyClass = [{boys, 20}, {girls, 10}]. [{boys,20},{girls,10}]
- 要素は何型でもOK
2> X = [1, 2, 3, apple, '@', {name, hiroyuki}]. [1,2,3,apple,'@',{name,hiroyuki}]
- リストの先頭の事をヘッドと呼び、残りをテールと呼ぶ
- "|"をヘッドとテールの区切りとして使う
3> [Head | Tail] = MyClass. [{boys,20},{girls,10}] 4> Tail. [{girls,10}]
-
- 残り要素が1個でも、テールはリストとして取り出される
- "|"を使えば、リストへの追加もOK
5> Y = [99, 99, 99, MyClass | X]. [99,99,99, [{boys,20},{girls,10}], 1,2,3,apple,'@', {name,hiroyuki}]
-
- "|"を使う時はテールをリストにする
- テールがリスト出ない時は「不正な形式」と呼ばれる
- "|"を使う時はテールをリストにする
6> [1, 2| 3]. [1,2|3] 7> [A | B] = [1, 2| 3]. [1,2|3] 8> B. [2|3] 9> [C | D] = B. [2|3] 10> D. 3
-
-
-
- ライブラリ関数の大半は「不正な形式」を仮定していない
-
-
- リストの連結も可
11> Z = Y ++ X. [99,99,99, [{boys,20},{girls,10}], 1,2,3,apple,'@', {name,hiroyuki}, 1,2,3,apple,'@', {name,hiroyuki}]
- リストから取り除く
12> Z -- [apple, '@', '@']. [99,99,99, [{boys,20},{girls,10}], 1,2,3, {name,hiroyuki}, 1,2,3,apple, {name,hiroyuki}]
-
- 最初にあるものだけ取り除かれる
- 2個消したいモノは2個書く
- 最初にあるものだけ取り除かれる
- ここまでにも出てきていますが、取り出す場合は、タプルと同じような方法
13> [_, _, _, _, _, _, _, _, _, {_, Q}] = Y. [99,99,99, [{boys,20},{girls,10}], 1,2,3,apple,'@', {name,hiroyuki}] 14> Q. hiroyuki
無名変数が多いと見難い>_<。
文字列
- 厳密に言えばerlangにはない
- 文字列は整数のリスト
- ""で囲む
15> "Hello". "Hello" 16> [97, 98, 99, 100, 10, 8]. "abcd\n\b" 17> [97, 98, 99, 100, 10, 7]. [97,98,99,100,10,7]
-
- リストに含まれる値全ての整数がLatin-1(ISO-8859-1)の範囲で表示可能な文字である場合、リストを文字列として表示する
- 文字と整数の対応を調べるのは"$"
18> $A. 65 19> [65 + 32]. "a"
何も考えずにwindowsで日本語を入れてみた。(番外編2)
番外編1
- 全てを忘れたい
20> f(). ok 21> Z. * 1: variable 'Z' is unbound
人生で欲しいかも?
番外編2
1> "あ". [130,160] 2> "あい". [130,160,130,162] 3> "あい逃". [130,160,130,162,147,166] 4> $"あい逃". f() aae taetaetaetnaoetnaoi rrrr ^G Eshell V5.7.4 (abort with ^G) 1>
SJISのコードになるらしい
"$"をつけた後の無駄な改行や、f()や、変な文字列は、反応がなくなったので、適当に叩いた形跡です。
Erlang は文字列のエンコーディングについては、一切関知しません。そもそもErlang では文字列は整数のリストです。リストの中に好きなようにコードを並べてください、というスタンスのようです。
http://ancient.s6.xrea.com/erlang/erlang.pdf
そのためソースファイルの文字コードをSJIS、EUC、UTF-8 等にしておけば、それらの文字コードで文字列リテラルを書くことができます。
ま、勉強が進んだら調べよう。