mirror of
https://github.com/erg-lang/erg.git
synced 2025-08-03 10:23:20 +00:00
Update faq_syntax.md
This commit is contained in:
parent
d020e19e93
commit
9783813ae0
1 changed files with 8 additions and 5 deletions
|
@ -4,11 +4,14 @@
|
|||
|
||||
## 當我們有所有權系統時,為什麼要與 GC 共存?
|
||||
|
||||
因為 Erg 推出所有權系統的動機並不是為了 Rust 那樣的“不依賴 GC 的內存管理”。最初,由於 Erg 是一種語言,目前使用 Python VM,因此最終仍使用 GC。 Erg 引入產權系統的目標是“可變狀態的局部化”。在 Erg 中,可變對象具有所有權概念。這是根據共享可變狀態容易成為 bug 的溫床,甚至是類型安全性的侵犯(詳見)來判斷的。
|
||||
Erg 引入所有權系統的動機不是像 Rust 那樣“不依賴 GC 的內存管理”。
|
||||
首先,Erg 目前唯一可用前端編譯Erg為Python字節碼,因此使用了 GC。
|
||||
Erg 所有權系統的目標是“可變狀態的本地化”。 Erg 有一個附屬於可變對象的所有權概念。
|
||||
這是因為共享可變狀態容易出現錯誤,甚至違反類型安全(參見 [此處](../syntax/type/advanced/shared.md#SharedReference))。這是一個判斷決定。
|
||||
|
||||
## 為什麼類型參數周圍的括號不是 <> 或 []?
|
||||
## 為什麼類型參數要大括號 || 而不是 <> 或 []?
|
||||
|
||||
因為在和中會發生語法衝突。
|
||||
這是因為 `<>` 和 `[]` 會導致語法衝突。
|
||||
|
||||
```python
|
||||
# []版
|
||||
|
@ -46,9 +49,9 @@ assert S.i == Int
|
|||
|
||||
## 為什麼 Erg 沒有異常機制?
|
||||
|
||||
在許多情況下,錯誤處理類型是更好的解決方案。類型<gtr=“9”/>是一種錯誤處理方法,通常在較新的編程語言中使用。
|
||||
因為在許多情況下,使用 `Result` 類型進行錯誤處理是更好的解決方案。 `Result` 類型是相對較新的編程語言中使用的常見錯誤處理技術。
|
||||
|
||||
在 Erg 中,運算符使你可以在不太注意錯誤的情況下編寫。
|
||||
在 Erg 中,`?` 運算符使編寫無錯誤。
|
||||
|
||||
```python
|
||||
read_file!() =
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue