Elixir学びの形跡(2)

Binaries, strings, and char lists – Elixir

## UTF-8 and Unicode

Elixirでは、?(文字)で文字コードが得られる。楽しい。

iex> ?a
97
iex> ?ł
322

codepointsというfunctionがかっこいい。

iex> String.codepoints("hełło")
["h", "e", "ł", "ł", "o"]

Elixirでは<<>>でバイナリが定義できる。

iex> <<0, 1, 2, 3>>
<<0, 1, 2, 3>>
iex> byte_size(<<0, 1, 2, 3>>)
4

文字列連結操作は実際はバイナリ連結操作とのこと。

iex> <<0, 1>> <> <<2, 3>>
<<0, 1, 2, 3>>

 

Elixirで使えるトリックとして、文字列にNullバイトを追加して文字列のバイナリ表現を見ることができるらしい。

 

iex> "hełło" <> <<0>>
<<104, 101, 197, 130, 197, 130, 111, 0>>

バイナリとは8で割り切れるビット。

iex>  is_binary(<<1 :: size(16)>>)
true
iex>  is_binary(<<1 :: size(15)>>)
false

シングルクォートでかこむとchar listになります。数字はコードポイントといって文字集合に対する数値のある種の振り方ですね。

iex> 'hełło'
[104, 101, 322, 322, 111]
iex> is_list 'hełło'
true
iex> 'hello'
'hello'
iex> List.first('hello')
104

奥が深すぎる、、w



 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です