Y a-t-il un moyen de simplifier cela:
var unloadedImagesRows = [String:[Int]]()
private func addToUnloadedImagesRow(row: Int, forLocation:String!) {
if unloadedImagesRows[forLocation] == nil {
unloadedImagesRows[forLocation] = [Int]()
}
unloadedImagesRows[forLocation]!.append(row)
}
6 Réponses :
Vous pouvez utiliser si vous pouvez utiliser l'instruction de Let ou Guard instruction de garde p> pour plus d'informations. Cochez cette page Lien P> P>
Vous pouvez le vérifier comme suit.
private func addToUnloadedImagesRow(row: Int, forLocation:String!) {
if let image = unloadedImagesRows[forLocation] {
//it is not nil
} else {
//it is nil
}
}
var unloadedImagesRows = [String:[Int]]()
// if let
private func addToUnloadedImagesRow(row: Int, forLocation:String!) {
if let _ = unloadedImagesRows[forLocation] {
} else {
unloadedImagesRows[forLocation] = [Int]()
}
unloadedImagesRows[forLocation]!.append(row)
}
// guard let
private func addToUnloadedImagesRow(row: Int, forLocation:String!) {
guard let _ = unloadedImagesRows[forLocation] else {
unloadedImagesRows[forLocation] = [Int]()
return addToUnloadedImagesRow(row, forLocation: forLocation)
}
unloadedImagesRows[forLocation]!.append(row)
}
// nil coalescing
private func addToUnloadedImagesRow(row: Int, forLocation:String!) {
var b = unloadedImagesRows[forLocation] ?? [Int]()
b.append(row)
unloadedImagesRows[forLocation] = b
}
On dirait que Nil Coalescing ne peut être utilisé que d'une manière parce que quelqu'un a la même réponse que j'ai pour cela. Apparemment, il me battait jusqu'à ce que je monte / travaille dans une aire de jeux. UPVOTE!
Vous pouvez créer un opérateur d'assistant pour les chèques NIL et l'utiliser comme ci-dessous.
var unloadedImagesRows = [String:[Int]]()
private func addToUnloadedImagesRow(row: Int, forLocation:String!) {
unloadedImagesRows[forLocation] ?= [Int]()
unloadedImagesRows[forLocation]!.append(row)
}
addToUnloadedImagesRow(1, forLocation: "This is something")
print(unloadedImagesRows) // "["This is something": [1]]\n"
Si vous souhaitez éviter si code> ou gardien code> vous pouvez essayer le Opérateur de coalescence nul (??) . private func addToUnloadedImagesRow(row: Int, forLocation:String!) {
var rowsForLocation = unloadedImagesRows[forLocation] ?? [Int]();
rowsForLocation.append(row)
unloadedImagesRows[forLocation] = rowsForLocation
}
Vous pouvez le simplifier en une seule ligne:
private func addToUnloadedImagesRow(row: Int, forLocation:String!) {
unloadedImagesRows[forLocation] = (unloadedImagesRows[forLocation] ?? []) + [row]
}
Si charmant! J'essayais si fort de comprendre ça! Bien que cela ait dû être + = ... beau travail!
À peu près sûr que votre réponse est la plus simple Swift a à offrir. Tous les autres ici semblent être moins simples et / ou efficaces. J'ai creusé pendant plus d'une heure à ce sujet et je ne pense pas qu'il existe un moyen plus simple d'exprimer cela.
Connaissez-vous un exemple d'une autre langue qui fait cela mieux? Je suis curieux de savoir ce qui a inspiré cette question et s'il y a une autre façon d'une autre langue, proposer peut-être un ajout de fonctionnalité similaire à Swift Open Source.