如何在 Ballerina 中创建布景?

How to create a set in Ballerina?

我需要在 Ballerina 中使用 array 弦乐创建 set 弦乐。除了在插入之前使用 reduce() 或检查 indexOf() 之外,我找不到使用 Ballerina 编程语言创建 set 的方法。

    string[] arr = ["a", "b", "c", "a", "d", "c"];
    string[] set = arr.reduce(function(string[] accum, string item) returns string[] {
            if accum.indexOf(item) == () {
                accum.push(item);
            }
            return accum;
        }, []);

在 Ballerina 中创建布景有更好的方法吗?

因为你想要的只是一组字符串,我建议使用映射。

import ballerina/io;

public function main() {
    string[] s = ["a", "b", "a"];
    map<()> m = {};
    foreach var i in s {
        m[i] = ();
    }
    string[] unique = m.keys();
    io:println(unique);
}

对于复杂类型的集合,我们可以使用 table 并执行类似于我们对 map 所做的操作。

如果预期的集合成员不是字符串;我们可以使用 table 代替。下面是一个例子

import ballerina/io;

type TblConstraint record {|
    //can use a type that is a subtype of anydata
    readonly anydata keyValue;
|};

public function main() {
    int[] arr = [1, 2, 3, 3, 4, 4, 5];
    table<TblConstraint> key(keyValue) setImpl = table [];
    foreach int item in arr {
        if (!setImpl.hasKey(item)) {
            setImpl.put({keyValue:  item});
        }
    }
    
    //unique values as in a set
    io:println(setImpl.keys());
}