ここのところ Ubuntu ばかりやっていたので、Elixir は久しぶり。
今日の練習問題は、['cat' | 'dog']
という式が、なぜ ['cat', 100, 111, 103]
になるのかという問題。まずは実際に確かめてみよう。
^o^ > iex Eshell V8.0 (abort with ^G) Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help) iex(1)> ['cat' | 'dog'] ['cat', 100, 111, 103]
まあ、答えは簡単だ。シングルクォートで囲まれた 'dog'
は実はただの整数のリストで、たまたまその整数すべてが文字コードとして解釈できるから 'dog'
になっているにすぎない。
iex(2)> [100, 111, 103] 'dog'
ところが、このリストの先頭に 'cat'
を追加してしまうと、すべてが文字コードとして解釈できる整数ではなくなってしまう。もう少し正確に言うと、リストの最初の要素がリスト、残りが整数になってしまっている。だから、後ろの3要素は文字ではなく文字コードで表示されている。