我有一个记录类型
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?我不需要更改其余字段名称,而是按原样映射它们。
想不出直接的语法。不过你可以做这样的事情。
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);
}