0

我有一个函数,它接受一个必需参数和两个可选参数。如果未提供可选参数,我希望该函数从结果中删除它们,但它的计算结果为空表达式。

我的功能:

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"
   }
}
4

1 回答 1

0

问题是您返回一个空对象:

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'),
}
于 2020-12-07T14:45:12.573 回答