在一个(if)语句中一次性检查多个字符串。

问题描述 投票:0回答:1

我想检查10个字符串不为空来运行我的脚本。如何合理分解,使其保持在一个函数之内?我的脚本依赖于所有这些都是真的,而且相当长,所以我不能单独询问每一个。在6个名字或更少的情况下,它可以工作。但是从名字7到10,我在构建我的应用程序时得到一个错误。

if (name[1] != "") && (name2[1] != "") && (name3[1] != "") && (name4[1] != "") && (name5[1] != "") && (name6[1] != "") && (name7[1] != "") && (name8[1] != "") && (name9[1] != "") && (name10[1] != "")

我得到这个错误。

编译器无法在合理的时间内对该表达式进行类型检查,请尝试将该表达式分解成不同的子表达式。

swift xcode compiler-errors predicate
1个回答
1
投票

像这样有编号的变量名是一个很大的危险信号。它们应该放在一个数组中。

你要找的是 Sequence.allSatisfy(_:),它返回 true 即序列中的所有成员都满足所提供的谓词。

let names = [name[1], name1[1], name2[1], ... name10[1]] // this is madness, get rid of these numbered variables

let allNamesArentEmpty = names.allSatisfy { !$0.isEmpty }
if allNamesArentEmpty { ... }
© www.soinside.com 2019 - 2024. All rights reserved.