如何在 Ballerina 中检查数组中是否存在对象

问题描述 投票:0回答:1

我想知道如何检查数组中是否已存在特定对象。

我尝试了以下方法,但它给出了编译时错误。

import ballerina/io;

class A {
    private int a = 2;
}


public function main() {
    A a = new;
    A[] arr1 = [a, a, a];
    A[] arr2 = [new , new, new];

    io:println(arr1.indexOf(a) != ());
}

错误:

ERROR [main.bal:(29:16,29:20)] incompatible types: expected 'ballerina/lang.array:0.0.0:AnydataType[]', found 'A[]'
ERROR [main.bal:(29:29,29:30)] incompatible types: expected 'ballerina/lang.array:0.0.0:AnydataType', found 'A'
error: compilation contains errors
arrays equality ballerina ballerina-swan-lake
1个回答
0
投票

array:indexOf 基于深度(值)相等,因此仅针对任何数据值(为其定义了深度相等)定义。变量 a 包含一个对象,该对象不是任何数据,因此,您不能对其使用 indexOf。

您可以使用以下方法来完成任务

import ballerina/io;

class A {
    private int a = 2;
}


public function main() {
    A a = new;
    A[] arr1 = [a, a, a];
    A[] arr2 = [new , new, new];

    io:println(arr1.some(element => element === a)); // true
    io:println(arr2.some(element => element === a)); // false
}
© www.soinside.com 2019 - 2024. All rights reserved.