gpt4 book ai didi

arrays - 在 Swift 3 中扩展类型化数组(基本类型如 Bool)?

转载 作者:IT王子 更新时间:2023-10-29 05:26:11 28 4
gpt4 key购买 nike

以前在 Swift 2.2 中我能够做到:

extension _ArrayType where Generator.Element == Bool{
var allTrue : Bool{
return !self.contains(false)
}
}

.allTrue 扩展了 [Bool]。例如

[true, true, false].allTrue == false

但是在 Swift 3.0 中我得到了这个错误:

undeclared type _ArrayType


所以我尝试将其切换为 Array 并使用新关键字 Iterator

extension Array where Iterator.Element == Bool
var allTrue : Bool{
return !self.contains(false)
}
}

但是我得到了一个不同的错误,提示我强制元素是非通用的

Same-type requirement makes generic parameter 'Element' non-generic


我也试过这个 2 years old post 中的解决方案但无济于事。

那么如何在 Swift 3 中扩展像 Bool 这样的基本类型数组呢?

最佳答案

只需扩展集合或序列

extension Collection where Element == Bool { 
var allTrue: Bool { return !contains(false) }
}

编辑/更新:

Xcode 10 • Swift 4 或更高版本

可以使用Swift 4或更高版本的收集方式allSatisfy

let alltrue = [true, true,true, true,true, true].allSatisfy{$0}  // true

let allfalse = [false, false,false, false,false, false].allSatisfy{!$0} // true

extension Collection where Element == Bool {
var allTrue: Bool { return allSatisfy{ $0 } }
var allFalse: Bool { return allSatisfy{ !$0 } }
}

测试 Playground :

[true, true, true, true, true, true].allTrue // true
[false, false, false, false, false, false].allFalse // true

关于arrays - 在 Swift 3 中扩展类型化数组(基本类型如 Bool)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39628695/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com