Skip to content

API Host ScriptDatum

Liu.Yandong.Hanks edited this page Aug 19, 2026 · 3 revisions

ScriptDatum

宿主可见的脚本值

Host-visible script value

.NET Host API 目录

.NET Host API Directory

概述

Overview

ScriptDatum 是宿主与脚本边界上的轻量值类型。优先使用 From... 工厂创建它,使用 KindTryGet... 检查它;不要假定任意脚本结果都是 CLR 原生类型。

ScriptDatum is the lightweight value type at the host/script boundary. Prefer From... factories to create it, and use Kind and TryGet... to inspect it; do not assume arbitrary script results are native CLR values.

常量

Constants

  • Null
    脚本 null

    Script null.
    var value = ScriptDatum.Null;

  • NaN
    脚本非数字。

    Script NaN.
    var value = ScriptDatum.NaN;

  • True / False
    布尔常量。

    Boolean constants.
    var value = ScriptDatum.True;

KindNumberBooleanObjectString

用途

检查当前有效负载;只有与 Kind 相符时才读取对应字段。

Inspect the current payload; read a corresponding field only when Kind matches.

var value = ScriptDatum.FromNumber(42);
if (value.Kind == ValueKind.Number)
{
    Console.WriteLine(value.Number);
}

FromBoolean / FromNumber / FromString / FromArray / FromDate / FromRegex / FromObject / FromError / FromBonding

Parameters:

  • 各工厂接收对应 CLR 或 AuroraScript 值。

    Each factory takes its matching CLR or AuroraScript value.

Returns

对应种类的 ScriptDatum

ScriptDatum of the corresponding kind.

var number = ScriptDatum.FromNumber(42);
var text = ScriptDatum.FromString("Aurora");
var enabled = ScriptDatum.FromBoolean(true);

ToObject / ToString / GetTypeName / TypeOf

Parameters:

  • d
    要转换或检查的 Datum。

    Datum to convert or inspect.

Returns

分别为对象包装、文本、类型名和脚本 typeof 值。

Object wrapper, text, type name, and script typeof value.

var value = ScriptDatum.FromString("Aurora");
Console.WriteLine(ScriptDatum.ToString(value));
Console.WriteLine(ScriptDatum.GetTypeName(value));

IsTrue / IsFalse / TryToNumber / TryToInteger

Parameters:

  • d
    要检查或转换的 Datum。

    Datum to inspect or convert.

  • out value
    接收转换结果。

    Receives converted result.

Returns

布尔检查结果或转换是否成功。

Boolean check result or conversion success.

var value = ScriptDatum.FromString("42");
if (ScriptDatum.TryToNumber(value, out var number))
{
    Console.WriteLine(number);
}

TryGetAnyObject / TryGetObject / TryGetArray / TryGetString / TryGetDate / TryGetRegex / TryGetFunction / TryGetError

Parameters:

  • d
    要匹配的 Datum。

    Datum to match.

  • out value
    接收强类型值。

    Receives typed value.

Returns

Datum 是否具有请求类型。

Whether the datum has the requested type.

var value = ScriptDatum.FromString("Aurora");
if (ScriptDatum.TryGetString(value, out var text))
{
    Console.WriteLine(text.Value);
}

Clone(d, [deepth])

Parameters:

  • d
    待克隆值。

    Datum to clone.

  • deepth
    是否深度克隆。

    Whether to clone deeply.

Returns

克隆后的 Datum。

Cloned datum.

var copy = ScriptDatum.Clone(ScriptDatum.FromString("Aurora"));

隐式转换

Implicit conversions

用途

boolstring 和常见数值可直接赋给 ScriptDatum

bool, string, and common numbers can be assigned directly to ScriptDatum.

ScriptDatum count = 42;
ScriptDatum title = "Aurora";
ScriptDatum enabled = true;

Clone this wiki locally