---
order: 0
---

# 运算符

与大多数编程语言一样，Navi Stream 支持基本的算术和逻辑运算符。

Navi Stream 也遵循传统编程语言的优先级，因此您可以根据以前的编程习惯继续使用 Navi Stream 语法。

```nv
let a = 100 + 2 - 10 * 5 / 2 % 3;
// 101
```

## 运算符

| 运算符                        | 描述                  |
| ----------------------------- | --------------------- |
| `!a`                          | 位或逻辑取反          |
| `a + b`                       | 算术加法              |
| `a += b`                      | 算术加法并赋值        |
| `-a`                          | 算术取负              |
| `a - b`                       | 算术减法              |
| `a -= b`                      | 算术减法并赋值        |
| `a * b`                       | 算术乘法              |
| `a *= b`                      | 算术乘法并赋值        |
| `a / b`                       | 算术除法              |
| `a /= b`                      | 算术除法并赋值        |
| `a % b`                       | 算术取余              |
| `a %= b`                      | 算术取余并赋值        |
| `a < b`                       | 小于比较              |
| `a <= b`                      | 小于或等于比较        |
| `a = 1`                       | 赋值/等价             |
| `a == b`                      | 等于比较              |
| `a > b`                       | 大于比较              |
| `a >= b`                      | 大于或等于比较        |
| `a != n`                      | 不等于比较            |
| `a && b`                      | `与` 逻辑             |
| <code>a &#124;&#124; b</code> | `或` 逻辑             |
| `expr.ident`                  | 成员访问              |
| `a[n]`                        | 引用前 `n` 周期的数据 |

## 引用前数据

我们可以使用 `quote.close[n]` 来引用前一个周期的数据。

例如，我们有 K 线（1 分钟）的数据：

| idx | 时间  | 收盘价 |
| --- | ----- | ------ |
| 1   | 10:00 | 10.25  |
| 2   | 10:01 | 10.50  |
| 3   | 10:02 | 10.75  |
| 4   | 10:03 | 11.00  |
| 5   | 10:04 | 11.25  |

如果现在在第 5 周期：

- `quote.close[0]` 是当前数据。
- `quote.close[1]` 是前 1 个周期的数据，值为 `11.00`。
- `quote.close[2]` 是前 2 个周期的数据，值为 `10.75`。
- `quote.close[3]` 是前 3 个周期的数据，值为 `10.50`。
