突破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
变体才是这种情况):
就是这样了!
希望您喜欢我的第二篇文章。 随时尝试一下,您可以在这里找到示例游乐场。