:::info 并不是很通用,但很多地方会有此用法,如下代码就很神奇了,哈哈哈哈哈 :::
/// Description: 多维数组转为List, 只能循环最后一个节点/// Input: pMultiData 多维数组数据, 如 aaa("cat",1)=222/// pNode(不允许为空) 节点位置, 第一级节点为要循环的, 则不给值/// Debug: w $lts(##class(PHA.COM.Util).Multi2List(.aaa, "a", "b", "c"), "^")ClassMethod Multi2List(ByRef pMultiData, pNode...){s ret = ""s index = ""if ($g(pNode) = ""){for {s index = $o(pMultiData(index), 1, data)q:(index = "")d SetMulti2List}}if (pNode = 1){for {s index = $o(pMultiData(pNode(1), index), 1, data)q:(index = "")d SetMulti2List}}if (pNode = 2){for {s index = $o(pMultiData(pNode(1), pNode(2), index), 1, data)q:(index = "")d SetMulti2List}}if (pNode = 3){for {s index = $o(pMultiData(pNode(1), pNode(2), pNode(3), index), 1, data)q:(index = "")d SetMulti2List}}if (pNode = 4){for {s index = $o(pMultiData(pNode(1), pNode(2), pNode(3), pNode(4), index), 1, data)q:(index = "")d SetMulti2List}}if (pNode = 5){for {s index = $o(pMultiData(pNode(1), pNode(2), pNode(3), pNode(4), pNode(5), index), 1, data)q:(index = "")d SetMulti2List}}q retSetMulti2Listq:(index = "")s ret = ret _ $lb(data)q}
DHC-APP>zw calcData
calcData("a","b",1)="yyy"
calcData("a","b",2)="hhh"
calcData("a","b",3)="bbb"
calcData("a","c",2)="XXX"
DHC-APP>w $lts(##class(PHA.COM.Util).Multi2List(.calcData, "a", "b"), "^")
yyy^hhh^bbb
