我尝试if(string? myStr)
但是在编辑器中出现语法错误。我如何在芭蕾舞女演员中进行类型检查?
答案 0 :(得分:1)
检查类型的用例是什么?
根据规格类型和值,根据其结构自动确定
芭蕾舞女演员的类型系统比传统系统更灵活 静态类型语言。首先,它是结构性的:而不是 要求程序明确说明哪些类型是兼容的 相互之间,确定类型和值的兼容性 自动根据其结构;这在特别有用 结合来自多个数据的集成方案, 独立设计的系统。其次,它提供了联合类型:a 选择两种或更多种类型。第三,它提供开放记录:记录 除了在其中明确命名的字段之外,还可以包含字段 类型定义。这种灵活性使它也可以用作 在分布式应用程序中交换的数据的模式。 芭蕾舞女演员的数据类型旨在与之相得益彰 JSON;任何JSON值都具有直接,自然的表示形式 芭蕾舞女演员的价值。 Ballerina还提供对XML和XML的支持 关系数据。
答案 1 :(得分:1)
您可以在此处使用type switch(match)语句或match语句的表达式版本。这是一个例子。
import ballerina/io;
function main (string... args) {
any a = "some string value";
// If the type of the variable a is string executes the first block, if not the second block.
match a {
string s => { io:println("string type");}
any k => {io:println("any other type");}
}
}
有关详细信息,请参阅以下示例。 https://ballerina.io/learn/by-example/match.html
答案 2 :(得分:1)
我确定这可能是次优的答案(即未涵盖所有方面),但我发现在Ballerina 1.0(实现语言规范2019R3)中,可以使用类型测试表达式。
我发现的最佳文档是:
下面是一个正常工作的Ballerina 1.0示例,其中包含 union 和 any 类型:
$ ballerina run test.bal
typeof a: typedesc int
a is int
typeof b: typedesc string
b is string
运行时打印:
{{1}}
答案 3 :(得分:1)
您可以为此使用类型保护语句,
例如:
if (myStr is string) {
io:println("This is String");
} else {
io:println("This isn't String");
}