Skip to content

Latest commit

 

History

History
102 lines (87 loc) · 1.62 KB

11.3.md

File metadata and controls

102 lines (87 loc) · 1.62 KB

11.3 シングルクオートで囲まれた文字列 - 文字コードのリスト

> str = 'wombat'
'wombat'
> is_list str
true
> length str
6
> Enum.reverse str
'tabmow'

整数のリストが文字列として出力される

> [67, 65, 84]
'CAT'

内部表現

io.format/2のオプション

  • ~w: データを標準的な記法で出力する
  • ~n: 改行する

cf. http://erlang.org/doc/man/io.html#format-2

文字として印字不可な場合、文字コードの列を返す

> str = 'wombat'
'wombat'
> :io.format "~w~n", [str]
[119,111,109,98,97,116]
:ok
> List.to_tuple str
{119, 111, 109, 98, 97, 116}
> str ++ [0]
[119, 111, 109, 98, 97, 116, 0]
> str
'wombat'

Erlangが印字不可と判断するとリストとして表示される

> '∂x/∂y'
[8706, 120, 47, 8706, 121]
> 'x/y'
'x/y'

文字のリストは「リスト」 パターンマッチできるし、Listモジュールの関数を使える

> 'pole' ++ 'vault'
'polevault'
> 'pole' -- 'vault'
'poe'
> List.zip ['abc', '123']
[{97, 49}, {98, 50}, {99, 51}]
> 'abc' ++ [0]
[97, 98, 99, 0]
> '123' ++ [0]
[49, 50, 51, 0]
> [head | tail] = 'cat'
'cat'
> head
99
> [99]
'c'
> tail
'at'
> [head | tail]
'cat'
> [99] ++ tail
'cat'

?c : 文字cの文字コード(整数)を返す

> c "strings/parse.exs"
[Parse]
> Parse.number('123')
123
> Parse.number('-123')
-123
> Parse.number('+123')
123
> Parse.number('+9')
9
> Parse.number('+a')
** (RuntimeError) Invalid digit 'a'
    strings/parse.exs:12: Parse._number_digits/2
> Parse.number('a')
** (RuntimeError) Invalid digit 'a'
    strings/parse.exs:12: Parse._number_digits/2