如何在Ballerina的isolated函数内使用map函数?代码报错求解
问题原因及修复方案
VS Code插件提示map内部函数非isolated,核心原因是Ballerina的isolated函数规则约束:
- 被标记为
isolated的函数,内部调用的所有函数(包括传给高阶函数的lambda表达式)必须满足isolated要求——要么本身是isolated函数,要么是不访问共享状态、无副作用的纯函数。 - 你传给
map的lambda逻辑上是纯函数,但Ballerina类型检查器不会自动推断它的isolated属性,必须显式声明,否则会触发合规性提示。
修正后的代码
class Node { (int|string)[] path; isolated function init((int|string)[] path) { self.path = path; } isolated function getPath() returns string[] { return self.path.clone().map(isolated n => n is int ? "@" : n); } }
只需给lambda表达式加上isolated修饰符,明确告知编译器该lambda符合isolated规范,即可消除提示。
内容的提问来源于stack exchange,提问作者Mohamed Ishad
相关产品推荐
相关产品推荐

