跳到主要内容

Applicative 转换系统

Applicative 是 Monoceros 的统一类型转换模型。它的作用很简单:把配置里的值,安全地转成你真正想要的目标类型。

这套系统会在哪里出现

你最常见的接触点有两个:

脚本参数声明

script/definition.md 里,你已经见过这种写法:

parameters:
player: Player
amount: Double

这里的 PlayerDouble,本质上就是 Applicative 注册名。

返回值转换

return-conversion: String

当脚本返回值需要被统一转成某种类型时,也会走 Applicative。

Applicative 解决了什么问题

如果没有这一层,很多系统都会各自写一套“字符串转对象”的逻辑,最后会很乱。

有了 Applicative 之后:

  • 脚本参数可以统一声明类型
  • 返回值可以统一做转换
  • 配置输入可以复用同一套类型名
  • 不同模块之间更容易共享数据格式

ApplicativeRegistry 是什么

ApplicativeRegistry 是 Applicative 的注册中心。你可以把它理解成“当前框架里有哪些可用类型转换器的总表”。

它支持两种常见查找方式:

  • 按类查
  • 按名字查

所以在 YAML 里写类型名时,本质上就是在引用注册表里已经存在的转换器。

什么时候你需要关心它

大多数普通服主只会在下面两种情况遇到它:

  • 写脚本参数声明时
  • 看返回值转换字段时

如果你只是使用默认能力,知道“这里填的是类型转换名”就够了。

如果你要做扩展、整合或高级脚本编排,这一页就很重要。

使用建议

  • 参数声明尽量保持明确,不要全靠脚本里自己猜类型
  • 返回值转换只在确实有跨模块传值需求时使用
  • 如果你发现多个脚本反复做同一类类型处理,通常就值得考虑 Applicative