Ich versuche, eine Reihe von Bool
s zu reduzieren, indem den logischen Operator Anwendung OR (||
) mit dem folgenden Code, jedoch bekomme ich einen Fehler:Verwendung logischer Operator als kombiniert Verschluss reduzieren
func reduceBools(values: [Bool]) -> Bool {
return values.reduce(false, combine: ||)
}
Ambiguous reference to member '||'
Analog für Ganzzahlen funktioniert der Code wie ein Charme.
func reduceInts(values: [Int]) -> Int {
return values.reduce(0, combine: +)
}
konnte ich es durch Zugabe einer ||
Funktion (Code unten) oder mit einem { $0 || $1 }
Verschluss, aber ich mag nicht diese Ansätze machen zu arbeiten, und ich würde einfach den Bediener vorbei bevorzugen.
func ||(lhs: Bool, rhs: Bool) -> Bool {
return lhs || rhs
}
Das gleiche geschieht für den logischen UND (&&
) Operator.
Wie kann ich es ohne den oben genannten Hack machen?
funktionieren wird, dass eine Wanze/Einschränkung aufgrund der "autoclosure" Parameter '||' und '' && zu sein scheint. Vergleichen Sie http://stackoverflow.com/questions/28648268/what-is-the-type-of-the-logical-operators und die folgenden Kommentare. –
@MartinR danke für den Link! Ich dachte, dass ich nur ein dummer Mann bin ... – user3441734
@MartinR das scheint der Fall zu sein:/Gibt es irgendeinen Rdar darauf, damit ich es dupen kann? – fpg1503