mirror of
https://github.com/erg-lang/erg.git
synced 2025-09-29 20:34:44 +00:00
66 lines
1.7 KiB
Markdown
66 lines
1.7 KiB
Markdown
# 操作员
|
||
|
||
[](https://gezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com/default/source_up_to_date?owner=erg-lang&repos=erg&ref=main&path=doc/EN/API/operators.md&commit_hash=d15cbbf7b33df0f78a575cff9679d84c36ea3ab1)
|
||
|
||
## 中缀运算符
|
||
|
||
### `_+_`|R, O, A <: Add(R, O)|(x: A, y: R) -> O
|
||
|
||
执行加法
|
||
|
||
### `_-_`|R, O, S <: Sub(R, O)|(x: S, y: R) -> O
|
||
|
||
执行减法
|
||
|
||
### `*`|R, O, M <: Mul R, O|(x: M, y: R) -> O
|
||
|
||
执行乘法
|
||
|
||
### `/`|R, O, D <: Div(R, O)|(x: D, y: R) -> O
|
||
|
||
进行除法
|
||
|
||
## 中缀字母运算符
|
||
|
||
### `and`(x: Bool, y: Bool) -> Bool
|
||
|
||
执行 and 操作
|
||
|
||
### `or`(x: Bool, y: Bool) -> Bool
|
||
|
||
执行 and 操作
|
||
|
||
## 前缀运算符
|
||
|
||
### `+_`|T <: Num|(x: T) -> T
|
||
|
||
默认与 id 相同
|
||
|
||
### `-_`|T <: Num|(x: T) -> T.Neg
|
||
|
||
例如 Nat.`-`: Nat -> Neg 和返回值不同
|
||
|
||
### `!`|T <: Immut|(x: T) -> `T!`
|
||
|
||
从不可变对象创建可变对象
|
||
该运算符本身不是程序性的,可以在函数内部使用
|
||
|
||
### `..`|T <: Ord|(x: T) -> Range T
|
||
|
||
在 x 的末尾创建一个没有下限的 Range 对象
|
||
x..x 仅返回 x 作为迭代器
|
||
|
||
### `..<`|T <: Ord|(x: T) -> Range T
|
||
|
||
x..<x 产生一个空的 Range 对象,不产生任何迭代器
|
||
|
||
## 后缀运算符
|
||
|
||
解析中缀运算符失败时调用后缀运算符
|
||
也就是说,即使`x..`返回一个函数,`x..y`是`(..)(x, y)`而不是`(x..)(y)`
|
||
|
||
### |T <: Ord|(x: T)`..` -> Range T
|
||
|
||
创建一个从 x 开始没有上限的 Range 对象
|
||
|
||
### |T <: Ord|(x: T)`<..` -> Range T
|