erg/doc/zh_TW/syntax/29_spread_syntax.md
Cai BingJun 8281c3194f trifle
2023-01-07 19:54:57 +08:00

43 lines
No EOL
1.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 擴展語法
[![badge](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fgezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com%2Fdefault%2Fsource_up_to_date%3Fowner%3Derg-lang%26repos%3Derg%26ref%3Dmain%26path%3Ddoc/EN/syntax/29_spread_syntax.md%26commit_hash%3De959b3e54bfa8cee4929743b0193a129e7525c61)](https://gezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com/default/source_up_to_date?owner=erg-lang&repos=erg&ref=main&path=doc/EN/syntax/29_spread_syntax.md&commit_hash=e959b3e54bfa8cee4929743b0193a129e7525c61)
在分解賦值中,將 `...` 放在變量前面會將所有剩余元素展開到該變量中。這稱為展開賦值
```python
[x,...y] = [1, 2, 3]
assert x == 1
assert y == [2, 3]
x, ...y = (1, 2, 3)
assert x == 1
assert y == (2, 3)
```
## 提取賦值
提取分配是一種方便的語法,用于本地化模塊或記錄中的特定屬性
```python
{sin; cos; tan} = import "math"
```
之后,您可以在本地使用`sincostan`
您可以對記錄執行相同的操作。
```python
record = {x = 1; y = 2}
{x; y} = record
```
如果要全部展開,請使用`{*}=record`。它在OCaml中是`open`
```python
record = {x = 1; y = 2}
{*} = records
assert x == 1 and y == 2
```
<p align='center'>
<a href='./28_comprehension.md'>上一頁</a> | <a href='./30_decorator.md'>下一頁</a>
</p>