Ballerina 我如何在芭蕾舞演员身上进行体格检查

Ballerina 我如何在芭蕾舞演员身上进行体格检查,ballerina,Ballerina,我尝试了if(string?myStr),但是编辑器中出现了语法错误。如何在Ballerina中进行类型检查?检查类型的用例是什么 根据等级库,类型和值根据其结构自动确定 芭蕾舞演员的类型系统比传统的更灵活 静态类型语言。首先,它是结构性的:而不是结构性的 要求程序明确说明哪些类型是兼容的 相互之间,类型和值的兼容性是确定的 自动基于其结构;这在某些情况下特别有用 将来自多个应用程序的数据组合在一起的集成场景, 独立设计的系统。其次,它提供了联合类型:a 两种或更多类型的选择。第三,它提供开放记

我尝试了
if(string?myStr)
,但是编辑器中出现了语法错误。如何在Ballerina中进行类型检查?

检查类型的用例是什么

根据等级库,类型和值根据其结构自动确定

芭蕾舞演员的类型系统比传统的更灵活 静态类型语言。首先,它是结构性的:而不是结构性的 要求程序明确说明哪些类型是兼容的 相互之间,类型和值的兼容性是确定的 自动基于其结构;这在某些情况下特别有用 将来自多个应用程序的数据组合在一起的集成场景, 独立设计的系统。其次,它提供了联合类型:a 两种或更多类型的选择。第三,它提供开放记录:记录 除了在其 类型定义。这种灵活性使它也可以用作 分布式应用程序中交换的数据的架构。 Ballerina的数据类型被设计为与 JSON;任何JSON值都有一个直接、自然的表示形式作为 芭蕾舞演员的价值观。Ballerina还提供对XML和XML的支持 关系数据

您可以在此处使用类型开关(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");}
    }
}
有关更多信息,请参考以下示例。

我确信这可能是一个次优答案(即没有涵盖所有方面),但我发现在Ballerina 1.0(实现语言规范2019R3)中,可以使用类型测试表达式

我找到的最好的文档是:

下面是一个使用union和任意类型的工作Ballerina 1.0示例:

运行时打印:

$ ballerina run test.bal 
typeof a: typedesc int
a is int
typeof b: typedesc string
b is string

您可以使用类型guard语句

例如:


请包括
myStr
的来源和确切的错误消息(作为文本,而不是屏幕截图)。此示例不使用Ballerina 1.0编译。我假设这个特性是1.0之前的版本,在Ballerina 1.0中不存在。Ballerina 1.0实现了类型测试表达式。
$ ballerina run test.bal 
typeof a: typedesc int
a is int
typeof b: typedesc string
b is string
    if (myStr is string) {
       io:println("This is String");
    } else {
       io:println("This isn't String");
    }