Swift高阶函数contains allSatisfy reversed lexicographicallyPrecedes用法示例
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li>一、contains</li><li>二、allSatisfy</li><li>三、reversed</li><li>四、lexicographicallyPrecedes</li></ul></div><p class="maodian"></p><h2>一、contains</h2><p>返回一个布尔值,指示序列的每个元素是否满足给定的条件。如果有一个满足即返回。</p>
<div class="jb51code"><pre class="brush:java;"> let expenses =
let hasBigPurchase = expenses.contains { $0 > 100 }
// 'hasBigPurchase' == true</pre></div>
<p><code>Sequence</code>协议源码</p>
<div class="jb51code"><pre class="brush:java;">@inlinable
public func contains(_ element: Element) -> Bool {
if let result = _customContainsEquatableElement(element) {
return result
} else {
return self.contains { $0 == element }
}
}</pre></div>
<div class="jb51code"><pre class="brush:java;">@inlinable
public func contains(
where predicate: (Element) throws -> Bool
) rethrows -> Bool {
for e in self {
if try predicate(e) {
return true
}
}
return false
}</pre></div>
<p class="maodian"></p><h2>二、allSatisfy</h2>
<p>返回一个布尔值,指示序列的每个元素是否满足给定的条件。需要所有元素都满足。</p>
<div class="jb51code"><pre class="brush:java;"> let names = ["Sofia", "Camilla", "Martina", "Mateo", "Nicolás"]
let allHaveAtLeastFive = names.allSatisfy({ $0.count >= 5 })
// allHaveAtLeastFive == true</pre></div>
<p><code>Sequence</code>协议源码</p>
<p><code>allSatisfy</code>里面调用了<code>contains</code>方法</p>
<div class="jb51code"><pre class="brush:java;">@inlinable
public func allSatisfy(
_ predicate: (Element) throws -> Bool
) rethrows -> Bool {
return try !contains { try !predicate($0) }
}</pre></div>
<p class="maodian"></p><h2>三、reversed</h2>
<p>返回一个数组,该数组以相反的顺序包含此序列的元素。</p>
<div class="jb51code"><pre class="brush:java;">let list =
let ret = list.reversed()
print(Array(ret))
---console
</pre></div>
<p><code>Sequence</code>协议源码</p>
<div class="jb51code"><pre class="brush:java;">@inlinable
public __consuming func reversed() -> {
// FIXME(performance): optimize to 1 pass?But Array(self) can be
// optimized to a memcpy() sometimes.Those cases are usually collections,
// though.
var result = Array(self)
let count = result.count
for i in 0..<count/2 {
result.swapAt(i, count - ((i + 1) as Int))
}
return result
}</pre></div>
<p class="maodian"></p><h2>四、lexicographicallyPrecedes</h2>
<p>返回一个布尔值,该值指示在字典顺序(字典)中该序列是否在另一个序列之前,使用给定条件语句比较元素。</p>
<div class="jb51code"><pre class="brush:java;">let list =
let list2 =
let ret1 = list.lexicographicallyPrecedes(list2)
let ret2 = list2.lexicographicallyPrecedes(list)
print(ret1, ret2)
---console
true false
</pre></div>
<p><code>Sequence</code>协议源码</p>
<div class="jb51code"><pre class="brush:java;">@inlinable
public func lexicographicallyPrecedes<OtherSequence: Sequence>(
_ other: OtherSequence
) -> Bool where OtherSequence.Element == Element {
return self.lexicographicallyPrecedes(other, by: <)
}</pre></div>
<div class="jb51code"><pre class="brush:java;">@inlinable
public func lexicographicallyPrecedes<OtherSequence: Sequence>(
_ other: OtherSequence,
by areInIncreasingOrder: (Element, Element) throws -> Bool
) rethrows -> Bool
where OtherSequence.Element == Element {
var iter1 = self.makeIterator()
var iter2 = other.makeIterator()
while true {
if let e1 = iter1.next() {
if let e2 = iter2.next() {
if try areInIncreasingOrder(e1, e2) {
return true
}
if try areInIncreasingOrder(e2, e1) {
return false
}
continue // Equivalent
}
return false
}
return iter2.next() != nil
}
}</pre></div>
<p>以上就是Swift高阶函数contains allSatisfy reversed lexicographicallyPrecedes用法示例的详细内容,更多关于Swift高阶函数用法的资料请关注琼殿技术社区其它相关文章!</p>
<div class="art_xg">
<b>您可能感兴趣的文章:</b><ul><li>Swift函数提前返回实例详解</li><li>Swift如何调用Objective-C的可变参数函数详解</li><li>C语言中调用Swift函数实例详解</li><li>深入理解swift变量和函数</li><li>详解Swift中的函数及函数闭包使用</li><li>浅谈在Swift中关于函数指针的实现</li></ul>
</div>
</div>
<!--endmain-->
頁:
[1]