- Mastering Elixir
- André Albuquerque Daniel Caixinha
- 313字
- 2021-08-05 10:42:47
Pattern matching on lists
Matching on lists is akin to matching on tuples. Here's a simple example:
iex> [first, second, third] = ["α", "β", "γ"]
["α", "β", "γ"]
iex> first
"α"
iex> second
"β"
iex> third
"γ"
There's nothing new here. What if, for instance, we don't care about the second element of the list? That's where the _ (underscore) anonymous variable is convenient:
iex> [first, _, third] = ["δ", "ε", "ζ"]
["δ", "ε", "ζ"]
iex> first
"δ"
iex> third
"ζ"
We're again matching a list with three elements, but now bind the second element to the _ variable, which means that we accept anything in that position and we won't use its value.
The _ variable can never be read from –if you do so, you will get a CompileError:
iex> _
** (CompileError) iex:83: unbound variable _
This way, Elixir is protecting you from inadvertently reading from this variable, which could easily cause unexpected behaviors in your application.
As we've mentioned on the data types section, you can use the hd and tl functions from the Kernel module to get the head and the tail of a list. You can do the same with pattern matching:
iex> [first | rest_of_list] = ["α", "β", "γ"]
["α", "β", "γ"]
iex> first
"α"
iex> rest_of_list
["β", "γ"]
While in this contrived example, this approach yields no benefit, this technique is a fundamental piece to operate on a list using recursion. We'll look at this in greater detail in the Working with collections section.
- Visual C++程序設計教程
- Arduino by Example
- Mastering matplotlib
- SQL Server 2016數據庫應用與開發
- 深入RabbitMQ
- 學習正則表達式
- C++反匯編與逆向分析技術揭秘(第2版)
- Beginning C++ Game Programming
- Mastering Embedded Linux Programming
- Learning WordPress REST API
- HTML并不簡單:Web前端開發精進秘籍
- H5頁面設計與制作(全彩慕課版·第2版)
- 自己動手做智能產品:嵌入式JavaScript實現
- OpenStack Networking Cookbook
- 活文檔:與代碼共同演進