的Swift Standard Library断言:序列下降(而:)看似是一无所
下降(而:)
返回跳过元素,同时谓词返回true,并返回剩余元素序列。
通过使用函数签名:
的闭合件,是以序列的元素作为它的参数,并返回:其中
predicate
被描述为func drop(while predicate: (Self.Element) throws -> Bool) rethrows -> Self.SubSequence
指示元素是否匹配的布尔值。
我的问题是,这样的描述下,不应该会出现以下行为:
let test = (0...3).drop { $0 > 1 }
test.contains(0) // true
test.contains(3) // true
我的印象是该方法在遍历整个序列时放弃了元素。如果是这种情况,$ 0会引用当前元素(就像map,filter,reduce等一样)。所以尽管'test.contains(0)'应该是true,'test.contains(3)'应该是false,对吧? –
@BrandonBradley我猜这里的文档不太清楚。当我看到方法的签名时,我立即想到了一个while循环,然后删除了序列的第一个元素,而谓词却是真的。 – Sweeper
嗯,我现在明白了为什么呼叫站点参数被命名为while。该方法现在更有意义,谢谢。 –