You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ballerina中如何获取联合类型变量的实际类型?

在Ballerina中实现指定的类型匹配与错误抛出

当然可以实现你想要的逻辑!Ballerina的模式匹配和类型处理能力完全支持这种场景,下面是对应的实现代码:

function foo() returns int|string|float|boolean|map|() {
    // 这里可以根据需求实现foo函数的返回逻辑,比如返回不同类型的值
    return "sample string";
}

function getIntValue() returns int {
    var value = foo();
    match value {
        int intVal => return intVal;
        string|float|boolean|map|() x => {
            error err = error(message = string`Expected an 'int', but found '${typeof(x)}'`);
            throw err;
        }
    }
}

// 测试示例
public function main() {
    try {
        int val = getIntValue();
        io:println(val);
    } catch error err {
        io:println(err.message);
    }
}

关键细节说明:

  • 模式匹配逻辑:Ballerina的match表达式可以精准匹配联合类型中的具体类型,int intVal会直接捕获int类型的返回值并绑定到intVal变量,直接返回即可。
  • 动态类型获取:使用typeof(x)函数可以获取变量x的实际运行时类型,完美满足你在错误消息中显示<type_of_x>的需求。
  • 错误构造与抛出:通过error构造函数创建包含自定义消息的错误对象,再用throw抛出;后续可以通过try-catch块捕获并处理这个错误。

当foo()返回非int类型的值时(比如示例中的字符串),运行后会输出:Expected an 'int', but found 'string',完全符合你的预期。

内容的提问来源于stack exchange,提问作者Pubudu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:08:21