# include_once

## 功能

运行期引入并执行 BT 文件，但同一个真实文件在当前执行上下文内只执行一次。

## 语法

```bt
include_once(path)
include_once path
```

## 参数

| 参数 | 类型 | 必填 | 默认值 | 说明 |
| ------ | ------ | ------ | ------ | ------ |
| path | String | 是 | 无 | 要引入的 BT 文件路径。 |

## 返回值

| 类型 | 说明 |
| ------ | ------ |
| Any/Empty | 首次执行时返回被引入文件的返回值；重复引入同一真实文件时返回 Empty。 |

## 示例

```bt
fs('once-demo.bt').write('counter = counter + 1')

counter = 0
include_once 'once-demo.bt'
include_once './once-demo.bt'

// 输出：1
echo(counter)
```

## 注意事项

- 重复判断使用规范化后的真实文件路径，不使用原始字符串路径。
- once 状态只属于当前执行上下文；Web 的每次请求、桌面 `bt.call()` 的每次调用都会重新创建状态。
- include_once 共享文件编译缓存，但不会缓存变量作用域、返回值或执行状态。
- 无括号语法只支持语句形式；需要把返回值赋给变量时请使用 `include_once(path)`。
