扩展函数把Documentation Index
Fetch the complete documentation index at: https://fluxon.tabooproject.org/llms.txt
Use this file to discover all available pages before exploring further.
target::method() 映射到 Java 侧实现,用于为特定宿主类型增加上下文能力(文件、集合、游戏对象等)。
核心代码分布在 FluxonRuntime、ExtensionBuilder、Environment。
快速上手(Builder)
function:同步扩展。asyncFunction:异步扩展(在线程池执行)。syncFunction:主线程同步扩展(通过 primaryThreadExecutor 执行)。sharedFunction:同步扩展 + 自动导出到跨 CL 共享注册表。sharedAsyncFunction:异步扩展 + 自动导出。sharedSyncFunction:主线程同步扩展 + 自动导出。
ExtensionBuilder 只是语法糖,底层仍调用 FluxonRuntime 的注册方法。
直接注册
使用FluxonRuntime.registerExtensionFunction 方法直接注册扩展函数:
fs:io + readText -> fs:io::readText()。
查找与匹配流程
- 解释器确定
target的Class<?>。 Environment#getExtensionFunction优先在烘焙的systemExtensionFunctions二维数组中按名称匹配。- 若未命中,回退到
extensionFunctions(名称 ->Map<Class<?>, Function>)。 - 匹配顺序为精确类型,再尝试
isAssignableFrom,确保子类可复用父类扩展。
实战提示
- 复杂类型示例可参考
core/src/main/java/org/tabooproject/fluxon/runtime/function/extension(Path、Collection等)。 - 想支持索引访问 (
obj[index]),需实现IndexAccessor(详见运行时章节)。 - 调试:
Environment#getRootExtensionFunctions()查看当前映射。 - 若调用失败,检查是否遗漏
import或命名空间不一致。 dumpFluxonCatalog可确认导出签名。