首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这是否可以检查快速数组中的所有值是否为真,而不是一个一个地循环?

这是否可以检查快速数组中的所有值是否为真,而不是一个一个地循环?
EN

Stack Overflow用户
提问于 2015-05-28 04:32:23
回答 5查看 22.3K关注 0票数 36

我只知道这是否可能有一个对象MyObject数组,而MyObject得到了一个名为isTrue的变量,除了循环整个数组以检查该数组中的所有对象是否为真之外,这样做是否有短时间呢?谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-05-28 04:36:23

编辑/更新:SWIFT4.2或更高版本

SWIFT4.2介绍了一种名为allSatisfy(_:)的新方法

代码语言:javascript
运行
复制
let bools = [true,false,true,true]

if bools.allSatisfy({$0}) {
    print("all true")
} else {
    print("contains false") // "contains false\n"
}

SWIFT5.2我们也可以使用KeyPath属性

代码语言:javascript
运行
复制
class Object {
    let isTrue: Bool
    init(_ isTrue: Bool) {
        self.isTrue = isTrue
    }
}

let obj1 = Object(true)
let obj2 = Object(false)
let obj3 = Object(true)

let objects = [obj1,obj2,obj3]

if objects.allSatisfy(\.isTrue) {
    print("all true")
} else {
    print("not all true")  // "not all true\n"
}
票数 71
EN

Stack Overflow用户

发布于 2018-10-05 09:34:55

Xcode 10SWIFT4.2开始,您现在可以在谓词中使用allSatisfy(_:)

代码语言:javascript
运行
复制
let conditions = [true, true, true]
if conditions.allSatisfy({$0}) {
  // Do stuff
}
票数 30
EN

Stack Overflow用户

发布于 2015-12-27 19:53:08

使用reduce函数的纯函数式方法:

代码语言:javascript
运行
复制
let boolArray = [true,true,true,true]
let isAllTrue = boolArray.reduce(true, combine: {$0 && $1}) // true
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30497309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档