为了在发生错误的情况下返回默认的json
,我编写了以下函数,在其中尝试对芭蕾舞女演员0.991.0中的json|error
类型使用match语句
此:
function jsonIt(json|error myJson)returns json{
match myJson {
var error(detail,message) => return {};
_ => return {};
}
}
编译(出于参数目的忽略忽略吞咽的错误),但是显然不会返回json值。
此:
function jsonIt(json|error myJson)returns json{
match myJson {
json j => return j;
var error(detail,reason) => return {};
}
}
不会编译=> extraneous input 'json'
基本上,我找不到与可能的json
类型匹配的任何方法。我尝试过:
json mj=> return mj;
var mj => return mj; //doesn't limit type to json
和其他一些。基本上,我找不到匹配json类型的方法,也无法像error(d,m)
尽管这些问题是独立存在的,但也建议您采用一种更惯用的方式来实现这一目标。
答案 0 :(得分:1)
根据您的问题描述,我认为您正在尝试在此处进行类型切换。即检查值是否属于特定类型。您可以在Ballerina中使用type test expression来使用该用例。以下两种方法应该可行。
function jsonIt(json | error myJson) returns json {
if (myJson is json) {
return myJson;
} else {
return {};
}
}
使用三元运算符
function jsonIt(json | error myJson) returns json {
return (myJson is json) ? myJson :{};
}
match
语句执行值切换。即根据值匹配的模式选择要执行的块