突破reduce()

关于如何在需要时reduce() method earlier if you want退出reduce() method earlier if you want

reduce()是Swift标准库中非常有用的方法。 它的工作方式类似于for in loop(实际上是一个in),但是它专门用于从集合中的元素中计算单个值。 仅有一个微妙的区别-我们不能这样做:

电脑和智能手机速度很快,但我们不希望它们浪费时间并且表现得像那只狗。 在我们的案例中,我们真正需要的是3次迭代…

reduce方法的重载(如原始声明中那样)中,我们可以看到我们在重载中实现的nextPartialResult可以引发异常,所以为什么不利用它–在传递条件时引发异常,如此处理它不会逃避我们扩展的范围并返回结果。

为了实现它,我们需要一个符合Error类型,它将一个Result对象传递给catch闭包:

为了完成它,让我们有一个完整的实现,它使我们不仅可以基于部分结果,还可以基于集合的当前元素来做出“破坏它或做出它”的决定(尽管如果有的话)像element == someThing您应该在reduce之前使用prefix(while:)

这里是:

它还有另一个变体,如果您希望在给定条件为真的情况下减少收款,则应使用它:

它给出了不同的结果,因此,当您不想包括以上条件的元素时可以使用它(因为until变体才是这种情况):

就是这样了!

希望您喜欢我的第二篇文章。 随时尝试一下,您可以在这里找到示例游乐场。