Elixirで単純なパターンマッチにハマりました。
前々からElixirに興味があったので、プログラミングElixirを購入しました。
- 作者: Dave Thomas,笹田耕一,鳥井雪
- 出版社/メーカー: オーム社
- 発売日: 2016/08/19
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
第2章のパターンマッチでまで読んだのだけれど、理解できないところが。
(この記事を書いていたら解決したけれど、せっかく書いたので残しておきます。)
分からなかったのは2章の「練習問題PatternMatching-1」で、 結果がどうなるのかというもの。
a = [ [1, 2, 3]] [a] = [ [1, 2, 3]] [ [a] ] = [ [1, 2, 3] ]
一つ目はすぐに分かったのだけれど、二つ目、三つ目が分からなかった。
一つ目は、aは[ [1, 2, 3]]
に束縛される。
これは見たままなので簡単。
二つ目は、aは[1, 2, 3]
に束縛される。
三つ目は、MatchErrorになる。
ぱっと見何これ?と思ったのだけれど、一段ずつリストを取り出して考えれば簡単に分かりました。
三つ目の場合でいうと、
[ [a] ] = [ [1, 2, 3] ] ↓ [a] = [1, 2, 3] ↓ a = 1, 2, 3
左辺は値(a)が一つだけれど、右辺は1, 2, 3の3つ。
左辺と右辺で値の個数が違うためエラー。
二つ目も同じように考えれば、[1, 2, 3]
になるのは納得。
上記みたいに考えれば簡単だけれど、最初式だけ見たときは全然理解できなくて、何これ?と思ってしまいました。
理解できたので引き続き3章以降も読み進めていこう。