我发现在迭代时,我经常需要以特殊的方式处理序列中的最后一个元素。例如,采用内置函数interpose
:
> (interpose ", " (range 4))
(0 ", " 1 ", " 2 ", " 3)
一种思考方式是:
- 取第一个元素,加上“,”
- 取第二个元素,加上“,”
- 取第三个元素,加上“,”
- ...
- 取倒数第二个元素,添加“,”
- 取最后一个元素,什么都不做
我还发现在使用 Seesaw 构建 Mig 布局时需要做一些特别的事情。例如,假设我要构建这个:
+---+---+---+
| 1 | 2 | 3 |
+---+---+---+
| 4 | 5 | 6 |
+---+---+---+
| 7 | 8 | 9 |
+---+---+---+
其中每个数字都是一些组件(例如按钮)。我可以通过使整个面板“流”的 Mig 布局约束来做到这一点,然后将以下约束添加到每个组件:
- “增长” - 组件 1、2、4、5、7、8、9
- “增长,包装” - 组件 3、6
请注意,上面可以这样说:
- 除了行中的最后一个组件之外的每个组件“增长”
- 除最后一行中的最后一个组件外的所有其他组件的“增长,包装”
再次出现相同的“特殊最后元素”主题。
所以两个问题:
- 上面的推理有意义吗?即我应该从根本上改变设计并考虑到上述示例问题和一般主题的不同方式吗?
- 如果没有,是否有一种惯用且简短的方法来做到这一点?
是的,您可以制作辅助函数和宏,但我发现这种情况经常发生,以至于我倾向于认为它应该是上述之一。换句话说 - 您是否遇到相同类型的“问题”以及如何解决它们?