我有一个递归函数:
function inline(o) {
return objEntries(o).reduce(function (result, item) {
var key = item[0];
var val = item[1];
if (val instanceof Object) {
objEntries(inline(val)).forEach(function (subItem) {
var subKey = subItem[0];
var subVal = subItem[1];
result[key + '.' + subKey] = subVal;
});
} else {
result[key] = val;
}
return result;
}, {});
}
function objEntries(obj) {
return Object.keys(obj).map(function (key) {
return [key, obj[key]];
});
}它获取一个对象并内联其属性。例如,如下所示:
var o = {some: {prop:5}}变成这样:
var o = {"some.prop": 5};我想在视觉上展示它是如何工作的。我可以使用哪些图表或符号?有没有人可以提供基于我概述的功能的小示例?
发布于 2016-06-28 00:24:26
你不会的,UML非常适合抽象。但一旦涉及到算法,它就一文不值了。不要试图使用序列图和片段,尽管您可能会提出算法。UML模型和代码之间存在某种裂痕,最好不要用UML弥合这种裂痕。如果您使用UML抽象地描述目标,并将其余部分留给编码人员,这是目前为止最好的方法。
附注:我在90年代一直梦想着图形化编程。我们有3和4GL,但你今天在实践中看到了什么?更像C语言的东西。祝Alf好运,但它可能也会以新鲜的猫汁结束。
发布于 2016-06-28 00:55:29
我不同意托马斯的观点。Alf是一种新的UML编程语言,默认情况下内置了函数式、面向对象和并行处理。它生成活动图。
即使你不使用Alf,活动也可以递归地调用它们自己。活动图只是比Alf更难画而已。Alf非常紧凑和强大。
发布于 2016-06-28 15:23:36
从理论上讲,活动图能够表示算法逻辑。
然而,这仍然应该在某种抽象级别上完成。使用UML记录每一行代码是没有意义的,否则您最终将使用UML进行编程,然后您将不得不寻找将"UML代码“转换为”常规“代码(或UML编译器)的工具。
https://stackoverflow.com/questions/38058433
复制相似问题