arg

open override fun arg(context: EventListenerContext): Result<Any?>(source)

使用内部所有的聚合 binder 对 context 进行评估并选出一个最先出现的可用值。

评估过程中:

  • 如果参数不可为 null、评估结果为成功但是内容为 null、同时参数是可选的, 则会忽略此结果,视为无结果。

  • 如果评估结果为失败,则暂记此异常,并视为无结果。

期间,遇到任何成功的、不符合上述会造成“无结果”条件的, 直接返回此评估结果,不再继续评估。

当所有binder评估完成,但没有遇到任何结果:

  • 如果参数为可选,输出debug日志并使用 ParameterBinder.Ignore 标记直接使用默认值。

  • 否则,返回 Result.failure 错误结果,并追加之前暂记的所有异常堆栈。