序列掉落(而:)看似没什么

时间:2017-07-26 00:51:08

标签: swift collections range sequence swift4

Swift Standard Library断言:

  

下拉(同时:)

     

通过跳过元素返回子序列,而谓词返回true并返回其余元素。

使用功能签名:

predicate

其中let test = (0...3).drop { $0 > 1 } test.contains(0) // true test.contains(3) // true 被描述为:

  

一个闭包,它将序列的一个元素作为其参数,并返回一个布尔值,指示该元素是否匹配。

我的问题是,根据该描述,不应发生以下行为:

event = CGEventCreateMouseEvent(None, type, (x, y), kCGMouseButtonLeft)
CGEventPost(kCGHIDEventTap, event)

2 个答案:

答案 0 :(得分:2)

我不明白为什么你不理解这种行为。文档很清楚,它与输出匹配。

文档说该方法将在谓词为真时继续跳过(删除)元素。它就像一个循环:

string

返回剩余的序列。

对于序列// not real code, for demonstration purposes only while predicate(sequence.first) { sequence.dropFirst() } ,它基本上是0...3对吗?

第一个元素0是否满足谓词[0, 1, 2]?不,所以虚构的while循环中断,没有任何内容被删除,因此返回原始序列。

我认为你可能会对$0 > 1感到困惑?

使用prefix时,它会在谓词为true时继续向序列添加元素,并在谓词变为false时返回序列。

prefix

答案 1 :(得分:0)

0不大于1,因此drop立即完成“丢弃”,并返回整个序列。

也许您正在寻找filter(_:)prefix(while:)