我想漂亮地解决改变集合的问题(没有if-s和循环):
用户有一个动物列表。动物只有名字并且是可选的。用户可以创建一个列表,为动物命名(或不命名),最重要的是,用户可以设置列表的大小,如果列表的大小大于现在的列表,动物名称为空添加到列表中(可以稍后填写),如果少,那么当前的动物列表应该减少到这个大小。
在这里,您可以通过检查当前列表的集合大小是更大还是更小来做出相当简单的程序决定,并根据这一点,我们从集合中删除 n 个元素或添加 n 个空元素。但我不喜欢它。
我想获取当前列表,根据列表大小给出的元素数量创建一个空列表,然后执行一个特定的联合来返回我需要的内容。
示例:当前动物集合:{ A, B, C }
用户将大小调整为 5:创建一个空集合(E - 空):{E, E, E, E, E}
合并:合并specialMerge({A, B, C}, {E, E, E, E, E})
结果:
{A, B, C, E, E}
调整为 2:
specialMerge({A, B, C, E, E}, {E, E})
合并结果:
{A, B}
没有 if-s 和循环!美丽!但是我在哪里可以找到这样一个统一的方法呢?
那些。我想知道自然界中是否存在这样的联合,它有一个名称和某种库实现(在任何语言中,尽管我更喜欢 JVM 语言(Scala、Java、Clojure、Groovy)),或者这些我的幻想?)
可能是最简单的方法:
在 lisp 中,它可能看起来像这样:
其中
values
- 这是一个元素列表, -N
结果列表中元素的数量,'empty
- 一个空元素