如何将 std.prune() 与函数一起使用?
How to use std.prune() with a function?
我有一个函数需要一个必需参数和两个可选参数。如果未提供可选参数,我希望该函数从结果中删除可选参数,但它的计算结果为空表达式。
我的函数:
local newTaskParam(pName, pDesc=null, pDef=null) = {
local param = std.prune(
{
name: pName,
description: pDesc,
default: pDef,
},
)
};
{
test: newTaskParam("pipeline-debug"),
}
当前输出:
{
"test": { }
}
预期输出:
{
"test": {
"name": "pipeline-debug"
}
}
问题是您返回一个空对象:
local func() = {
// expected here to return field: value pairs
};
为了您的目的,最简单的方法应该是返回调用 std.prune() 而无需 自己“构建”返回的对象的结果:
local func() = std.prune(
);
因此,您可以将其实现为:
local newTaskParam(pName, pDesc=null, pDef=null) = std.prune(
{
name: pName,
description: pDesc,
default: pDef,
}
);
{
test: newTaskParam('pipeline-debug'),
}
我有一个函数需要一个必需参数和两个可选参数。如果未提供可选参数,我希望该函数从结果中删除可选参数,但它的计算结果为空表达式。
我的函数:
local newTaskParam(pName, pDesc=null, pDef=null) = {
local param = std.prune(
{
name: pName,
description: pDesc,
default: pDef,
},
)
};
{
test: newTaskParam("pipeline-debug"),
}
当前输出:
{
"test": { }
}
预期输出:
{
"test": {
"name": "pipeline-debug"
}
}
问题是您返回一个空对象:
local func() = {
// expected here to return field: value pairs
};
为了您的目的,最简单的方法应该是返回调用 std.prune() 而无需 自己“构建”返回的对象的结果:
local func() = std.prune(
);
因此,您可以将其实现为:
local newTaskParam(pName, pDesc=null, pDef=null) = std.prune(
{
name: pName,
description: pDesc,
default: pDef,
}
);
{
test: newTaskParam('pipeline-debug'),
}