- Mastering Elixir
- André Albuquerque Daniel Caixinha
- 309字
- 2021-08-05 10:42:46
Pattern matching on tuples
The following snippet shows how pattern matching can be done on tuples:
iex> {number, representation} = {3.1415, "π"}
{3.1415, "π"}
iex> number
3.1415
iex> representation
"π"
The process here is the same as we have described in the preceding snippet. By setting the {number, description} pattern on the left-hand side, we're stating that we expect a tuple with two values—again, if that's not the case, a MatchError will be raised. In this case, the match succeeds, and we can see that the variables number and representation are bound to the expected values.
iex> a = 1
1
iex> a = 7
7
However, a variable can only bind once per match:
iex> {a, a} = {3, 3}
{3, 3}
iex> {a, a} = {2, 3}
** (MatchError) no match of right hand side value: {2, 3}
On the first line, the match succeeds because each a is binding to the same value, 3. On the second line, we get a MatchError because we're binding a to two different values on the same match. Later in this chapter, we'll see how we can make Elixir behave like Erlang in this regard, by using the pin operator.
We can set our expectations even further, using literals on the left-hand side:
iex> {3.1415, representation} = {3.1415, "π"}
{3.1415, "π"}
iex> representation
"π"
Now our expectation is a tuple with two elements, where the first one is the 3.1415 float literal. We can use this on other Elixir types as well, such as lists or maps. This technique becomes even more fruitful when we apply it to functions, as we will see in the next section.
- 程序員面試筆試寶典(第3版)
- 深度實踐OpenStack:基于Python的OpenStack組件開發
- Rust實戰
- PaaS程序設計
- Visual FoxPro 程序設計
- Java加密與解密的藝術(第2版)
- Programming ArcGIS 10.1 with Python Cookbook
- 名師講壇:Java微服務架構實戰(SpringBoot+SpringCloud+Docker+RabbitMQ)
- 大數據分析與應用實戰:統計機器學習之數據導向編程
- C語言程序設計
- Instant PHP Web Scraping
- Python開發基礎
- Monitoring Docker
- Parallel Programming with Python
- C# 10核心技術指南