下拉(同时:)
通过跳过元素返回子序列,而谓词返回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)
答案 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:)