- 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.
- TypeScript Essentials
- 算法訓練營:入門篇(全彩版)
- iOS開發實戰:從零基礎到App Store上架
- UML+OOPC嵌入式C語言開發精講
- 教孩子學編程:C++入門圖解
- jQuery開發基礎教程
- Visual FoxPro程序設計習題集及實驗指導(第四版)
- Python全棧數據工程師養成攻略(視頻講解版)
- Clojure for Machine Learning
- 深入理解BootLoader
- 從零開始學Selenium自動化測試:基于Python:視頻教學版
- Python 3快速入門與實戰
- Learning Dynamics NAV Patterns
- Java Web開發系統項目教程
- Visual C++.NET 2010開發實踐:基于C++/CLI