-
Notifications
You must be signed in to change notification settings - Fork 0
API Host Extended
Liu.Yandong.Hanks edited this page Aug 26, 2026
·
4 revisions
用于读取 ScriptDatum span 和检查运行时值标志的宿主回调辅助类。
命名空间:AuroraScript。类型:class。
Extended 是扩展方法的静态类。span 读取器从位置参数 span 中提取类型化值,无需复制或装箱;Include 测试 ValueKind 标志。
Note
这些辅助方法主要在 ClrDatumDelegate 或其他原始 ScriptDatum 宿主回调中有用。
Extended 的最小用法。
Span<ScriptDatum> args = [ScriptDatum.FromNumber(42)];
if (args.TryGetInt32(0, out var value))
{
Console.WriteLine(value); // 42
}static bool Include(this ValueKind valueKind, ValueKind flag)测试值种类是否包含某个标志。
参数
| 名称 | 类型 | 必需 | 说明 |
|---|---|---|---|
valueKind |
ValueKind |
是 | 要检查的值种类。 |
flag |
ValueKind |
是 | 要测试的标志。 |
返回值
标志已设置时返回 true;否则返回 false。
if (datum.Kind.Include(ValueKind.String))
{
Console.WriteLine(ScriptDatum.ToString(datum));
}static bool TryGetNumber(this Span<ScriptDatum> source, int index, out double value)
static bool TryGetInteger(this Span<ScriptDatum> source, int index, out long value)
static bool TryGetInt32(this Span<ScriptDatum> source, int index, out int value)
static bool TryGetStrictNumber(this Span<ScriptDatum> source, int index, out double value)
static bool TryGetString(this Span<ScriptDatum> source, int index, out string value)
static bool TryGetObject(this Span<ScriptDatum> source, int index, out ScriptObject value)
static bool TryGetEnumerator(this Span<ScriptDatum> source, int index, out ScriptEnumerator value)
static bool TryGetFunction(this Span<ScriptDatum> source, int index, out ClosureFunction value)
static bool TryGetBoolean(this Span<ScriptDatum> source, int index, out bool value)
static bool TryGetRef(this Span<ScriptDatum> source, int index, ref ScriptDatum value)将单个位置参数读取为特定类型。
参数
| 名称 | 类型 | 必需 | 说明 |
|---|---|---|---|
source |
Span<ScriptDatum> |
是 | 传递给宿主回调的参数 span。 |
index |
int |
是 | 要读取的从零开始的参数索引。 |
value |
out 或 ref 参数 |
是 | 接收读取值。类型取决于读取器。 |
返回值
参数存在且匹配请求类型时返回 true;否则返回 false。
行为
-
TryGetNumber应用脚本数字强制转换;TryGetStrictNumber仅接受数字值。 -
TryGetRef通过ref接收目标,因此回调可以读写同一槽。 - 读取超出
source末尾时返回false而非抛出异常,因此回调可以将缺失参数视为可选。
ClrDatumDelegate add = (
ScriptContext ctx,
ScriptObject module,
Span<ScriptDatum> args,
ref ScriptDatum result) =>
{
if (args.TryGetNumber(0, out var left) && args.TryGetNumber(1, out var right))
result = ScriptDatum.FromNumber(left + right);
};AuroraScript.JIT 4.0.0 · 文档首页 · 仓库 · MIT License