在 Ballerina 中将数据从一条记录映射到另一条记录时映射剩余字段

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

我有一个记录类型

Foo
,它是一个开放记录,具有一组定义的字段。我有另一条记录
Bar
,它也是一个开放记录,具有一组定义的字段。我需要将数据从
Foo
映射到
Bar
,如下所示:

type Foo record {
    string fs;
    int fi;
};

type Bar record {
    string bs;
    int bi;
};

function transform (Foo foo) returns Bar => {
    bs: foo.fs,
    bi: foo.fi
}

如何将其余字段从 Foo 映射到 Bar?我不需要更改其余字段名称,而是按原样映射它们。

record datamapper ballerina
1个回答
0
投票

想不出直接的语法。不过你可以做这样的事情。

public function main() {
    Foo foo = {fs: "hello", fi: 42, "a": 1, "b": true, "c": "cat"};
    Bar bar = {bs: foo.fs, bi: foo.fi};

    foreach string k in foo.keys() {
        if k != "fs" && k != "fi" {
            bar[k] = foo[k];
        }
    }
    io:println(bar);
}
© www.soinside.com 2019 - 2024. All rights reserved.