我想检查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] != "")
我得到这个错误。
编译器无法在合理的时间内对该表达式进行类型检查,请尝试将该表达式分解成不同的子表达式。
像这样有编号的变量名是一个很大的危险信号。它们应该放在一个数组中。
你要找的是 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 { ... }