ballerina - 我可以获得联合类型变量的实际类型吗?

标签 ballerina

假设我有如下代码片段:

var value = foo(key);

match value {
    int intVal => return intVal;

    string|float|boolean|map|() x => {
        error err = { message: "Expected an 'int', but found '<type_of_x>'"  };
        throw err;
    }
}

foo() 返回一个并集:int|string|float|boolean|map|()

在上述情况下,我期望返回值的类型为“int”,如果不是,则希望打印错误,表示需要 int 但发现 type_of_x 相反。这可以在《芭蕾舞女 Actor 》中完成吗?

最佳答案

Ballerina 语言目前没有类似于 typeof 的运算符。不过,我可以建议一个明显的解决方法来扩展 Nuwan 的解决方案。

function bar () returns int {
    var value = foo();

    string typeName;
    match value {
        int intVal => return intVal;
        string => typeName = "string";
        float => typeName = "float";
        boolean => typeName = "boolean";
        map => typeName = "map";
        () => typeName = "nil";
    }

    error err = { message: "Expected an 'int', but found '" + typeName + "'"  };
    throw err;
}

function foo() returns int|string|float|boolean|map|() {
    return "ddd";
}

关于ballerina - 我可以获得联合类型变量的实际类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50285153/

相关文章:

ballerina - 如何为芭蕾舞 Actor 设置http代理?

ballerina - 芭蕾舞女 Actor 中的 `any` 和 `var` 有什么区别

ballerina - 芭蕾舞女 Actor 是否支持排序?

ballerina - 资源方法调用中路径参数未解析

json - 在 Ballerina 中将字符串转换为 Json

ballerina:传递给敏感参数的受污染值

ballerina - 如何在 Ballerina 中编写测试用例?

ballerina - 运行时错误芭蕾舞女 Actor

wso2 - 尝试将外部 jar 导入 ballerina 模块时出错

ballerina - 有没有办法在代码中从 Ballerina.toml(组织、名称或版本)访问包信息?